如何在Angular2中触发应用程序范围的事件或观察全局变量

时间:2016-08-23 09:39:44

标签: javascript angular

我有以下架构:

Navbar是一个包含以下内容的组件:

loggedIn = false;

  constructor(private authService: AuthService) {
    this.loggedIn = authService.isAuthenticated();
  }

根据变量显示不同的链接

authService中的方法:

  isAuthenticated() : boolean {
    return tokenNotExpired();
  }

  authenticate(email: string, password: string) : Promise<void> {
    const headers = new Headers({
    'Content-Type': 'application/json'});
    const body = JSON.stringify({ email, password });
    return this.http.post(`${apiUrl}/auth/login`, body, { headers })
      .toPromise()
      .then(response => {
        const data = response.json();
        this.user = data.user;
        localStorage.setItem('id_token',data.token);
      });
  }

当isAuthenticated()返回另一个值时,我希望在导航栏中收到通知。

我应该在AuthService中使用可观察的值而不是仅检查有效令牌吗?我应该在验证方法的成功中发出事件吗? 我只能通过@input找到有关父子事件发送者的信息。

注意:我正在使用angular2-jwt,并且从auth.guard中为受保护路由调用isAuthenticated()方法。

1 个答案:

答案 0 :(得分:0)

您绝对应该在AuthService中使用Observable主题。看一下这个link from angular.io