Angular2使用订阅和路由更改

时间:2016-11-07 01:13:36

标签: angular

我发现我的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();
  }

}

1 个答案:

答案 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");
            }
        });
    }
}