从另一个组件通知其他组件 - Angular 2

时间:2016-10-19 13:48:18

标签: angular

我有这个问题无法解决。我想改变" LOGIN"将我的标题组件中的文本转换为" LOGOUT"使用令牌成功登录后的文本。

login () {

    if(this.loginForm.valid){
        this.authenticationService.login(this.loginForm.value.username,this.loginForm.value.password)
                .subscribe(
                    data => {
                        this.showError = false;
                        this.router.navigate(['']);
                    }
    }
}

在我的AuthenticationService中,我有这个功能" isLoggedIn()"其中检查是否有已保存的令牌:

login(username,password){
        let headers = new Headers();
        headers.append('Content-Type','application/json');

        return this.http.post(this.configEnvironment.url() + "oauth/access_token",
            JSON.stringify(
                {
                    username: username,
                    password: password,
                    grant_type: "password",
                    client_id: "xx",
                    client_secret: "xx"
                }
            ),
            { headers }
        )
        .map(res => res.json())
        .map(res => {
            localStorage.setItem("access_token",res.access_token);
            localStorage.setItem("refresh_token",res.refresh_token);

            this.loggedIn = true;
        })
        .catch((err:Response) => {
            let error = {};
            error["message"] = err.json();
            error["status"] = err.status;

            return Observable.throw(error);

         });

     }

     isLoggedIn() {
         return this.loggedIn;
     }

现在,在构造函数的头部分中,我调用的是AuthenticationService中的isLoggedIn函数:

this.isLoggedIn = this.authenticationService.isLoggedIn();

<ul class="nav navbar-nav navbar-right" *ngIf="!isLoggedIn">
                <li><a [routerLink]="['/login']">Log in</a></li>
                <li><a [routerLink]="['/signup']" class="btn btn--red">Sign up</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right" *ngIf="isLoggedIn">
                <li><a (click)="logout()">Logout</a></li>
            </ul>

我的问题是,当LoginComponent重定向后,当isLoggedIn值发生变化时,HeaderComponent不会监听。

0 个答案:

没有答案