【发布时间】:2020-12-11 19:23:13
【问题描述】:
这似乎是一个非常简单的任务。我已经编写了代码,它也可以正常工作。但是有一个小问题。首先让我给你看代码:
navbar.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
currentUserFirstname="";
currentUserLastname="";
constructor() {
}
ngOnInit() {
this.currentUserFirstname=localStorage.getItem('firstname');
this.currentUserLastname=localStorage.getItem('lastname');
}
}
navbar.component.html
<span class="current-user">{{currentUserFirstname}} {{currentUserLastname}}</span>
我只想显示我必须从存储中获取的当前登录用户。问题是,它永远不会第一次显示。看,在绿色圆圈之后什么都没有:
我尝试使用setTimeout(),但没有成功:
ngOnInit() {
setTimeout(function(){
this.currentUserFirstname=localStorage.getItem('firstname');
this.currentUserLastname=localStorage.getItem('lastname');
}, 2000);
}
请帮助我。我需要帮助使该任务的代码同步。
【问题讨论】:
-
您可以使用该服务来存储名称并在初始化时从那里获取它。
-
我认为这是一个设计问题,例如组件是在存储中有信息之前创建的。尝试对 firstName / lastName 的
ngOnInit()方法执行console.log。 -
@MohitKumar 哦,好的,先生。那么用简单的样板代码是不是不能实现呢?
-
@HTN,你是对的。我试过控制台日志。两者都给我
<empty string>。 -
导航栏组件应该在用户登录时动态创建,或者它应该监听这个事件来更新用户名。
标签: angular local-storage