Angular2订阅一个全局变量

时间:2016-10-13 11:22:58

标签: html angular typescript

我对Angular 2很新,我有一点问题。 我有一个标题组件,在标题中我想使用ngIf,因为在登录屏幕中我会隐藏标题(导航栏)。 此外,我想从标题中隐藏更多内容,具体取决于用户配置文件。

要存储,如果用户已登录,我有一个名为 variables.ts 的全局服务,如下所示:

    import { Injectable }   from '@angular/core';

@Injectable()
export class Variables {
    private url = "...";
    private username;
    private password;
    private isLoggedIn = false;

    constructor() {}

    setUrl(val) {
        this.url = val;
    }
    getUrl() {
        return this.url;
    }

    setUsername(val) {
        this.username = val;
    }
    getUsername() {
        return this.username;
    }

    setPassword(val) {
        this.password = val;
    }
    getPassword() {
        return this.password;
    }

    setIsLoggedIn(val) {
        this.isLoggedIn = val;
    }
    getIsLoggedIn() {
        return this.isLoggedIn;
    }
}

我的标题组件如下所示:

    import { Component }            from '@angular/core';
import { Router }               from '@angular/router';
import { Variables }            from '../../services/variables';

@Component({
    selector: 'app-header',
    moduleId: module.id,
    templateUrl: 'header.component.html'
})


export class HeaderComponent {

    constructor(private variables: Variables) {}
    isLoggedIn() {  
        return this.variables.getIsLoggedIn();
    }
    console.log(loggedIn); 
}

最后但并非最不重要的是,在header.component.html中我这样做了:

<nav class="navbar navbar-default navbar-static-top" *ngIf="isLoggedIn()">

我现在的问题是,标头组件不会自动更新var loggedIn,因此如果我已登录,则会隐藏标头。

如何使其正常运作?

1 个答案:

答案 0 :(得分:0)

我更新了我原来的帖子,现在它正在运行;) 谢谢你的帮助!

解决方案:不要将它直接绑定到变量,而是绑定到函数,并在“ngIf”中只询问函数;)