我发现我的Angular2订阅仅在页面加载时触发。当我设置routerLink
远离我的 home.component 时,checkUser()
功能无法启动。
例如,我将routerLink设置为单独的页面(about)。如果在我的about page页面中将routerLink设置回我的主页,那么 home.component 中的checkUser()
函数将无效。
让我的订阅使用这些路线更改的最佳方法是什么?
我的 home.component
export class HomeComponent implements OnInit {
private username$: FirebaseObjectObservable<string>;
private dashlink: boolean;
private logsub: Subscription;
constructor(private mainService: MainService){
}
checkUser(){
this.logsub = this.mainService.userThere$.subscribe( isUser => {
if (isUser){
alert("Yes");
}
});
}
ngOnInit(){
this.checkUser();
}
}
答案 0 :(得分:1)
通常,您可以在每个constructor
(组件类)的class
中放置初始化所需的任何代码。
对于您的情况,您希望在constructor
内放置检查用户代码,每次HomeComponent
匹配目标路线时都会调用该代码。
export class HomeComponent implements OnInit {
private username$: FirebaseObjectObservable<string>;
private dashlink: boolean;
private logsub: Subscription;
constructor(private mainService: MainService){
// moving checkUser code inside constructor
this.logsub = this.mainService.userThere$.subscribe( isUser => {
if (isUser){
alert("Yes");
}
});
}
}