【发布时间】:2017-04-15 04:11:38
【问题描述】:
我有一个路由应用程序,除了我有一个不会显示在路由更改上的 *ngIf 元素之外,它可以加载并正常工作,除非我重新加载页面。我有一个来自服务类的令牌变量,我将它存储在本地存储中,并且我想在令牌不为空时显示我的注销按钮。
当网站加载时,它将令牌值设置为 null 隐藏按钮(预期行为)但是当登录并看到令牌到 guid 时,变量不显示令牌值,除非我重新加载页面重新初始化标头组件。
以下缩写代码。
Import { Component } from '@angular/core';
Import { globalService } from './shared/globalService';
@Component({
selector: 'header-ele',
template: ` <div *ngIf="loginToken != null"><button>logout</button></div>
<router-outlet></router-outlet>`
})
export class headerComponent {
loginToken:any;
constructor(globalService: globalService){
this.logonToken = globalService.getUser(); //this either returns null or a token string
}
}
然后我有另一个组件可以更改所有正常工作的路线
//I have all of my correct imports and all works
export class loginComponent {
login(){
// I pass login params and get success
this.globalService.setUser(returnedData.LogonToken)
}
}
在 globalService 中,我设置了 logonToken = returnedData.LogonToken,但我的 headerComponent 中的按钮不会显示,除非我重新加载页面。所以,我想知道是否有办法在路由更改成功时重新初始化 headerComponent 以从构造函数中的 globalService 获取令牌,或者是否有更好的方法在 globalService 和 headerComponent 之间共享该参数。
由于是从手机提交的,所以代码略短,但应该明白了。
仍在学习 Angular 2 的来龙去脉。
【问题讨论】:
标签: angular2-routing angular2-services angular2-components