用户从“/登录”登录到仪表板“/”后,我试图将注销元素添加到菜单中,
首先,我尝试将身份验证服务添加到仪表板组件并像这样在组件初始化(ngOnInIt)上更新用户变量
this.authService.getUser().subscribe(
(data) => {
if (data !== null) {
this.username = data.local.username;
}
});
Run Code Online (Sandbox Code Playgroud)
但是我的根组件在从“/login”页面重定向后不执行 ngOnInit,因此我的用户名也没有被检索到。
第二次,我尝试使用 Observable 进行更改检测,使usernameauth Service 中的变量 Observable
user$: Observable<string> = this.getUser().map( data => {
if (data !== null) {
return data.local.username;
}
});
getUser() {
return this.http.get('/api/user')
.catch( (error: any) => {
return Observable.throw( error.toString() || ' :server error');
});
Run Code Online (Sandbox Code Playgroud)
}
在我的仪表板中,我注入了这个身份验证服务并调用了 *ngIf="authService.user$ | async"
但是我的结果是一样的,我必须两次重新加载我的页面才能在菜单中显示注销字符串。
这是我第一个使用 angular 的个人项目,请不要犯任何小错误,并花时间解释一下。谢谢
angular ×1