Angular 角度2-更新视图/组件

Angular 角度2-更新视图/组件,angular,Angular,我有一个带有ngOnInit()的组件和一个login()方法 登录完成后,如何更新组件并再次执行Ngonit方法 ngOnInit() { this.loading = true; this._guestService.getAllGuests() .subscribe( guests => this.guests = guests, err => console.log(err),

我有一个带有
ngOnInit()
的组件和一个
login()
方法

登录完成后,如何更新组件并再次执行Ngonit方法

ngOnInit() {
    this.loading = true;
    this._guestService.getAllGuests()
        .subscribe(
            guests => this.guests = guests,
            err => console.log(err),
            () => console.log('Request Complete')
         )
}  

login() {
    this.auth.login();
}
logout() {
    this.auth.logout();
}
auth.login
服务:

 login() {
   this.lock.show((error: string, profile: Object, id_token: string) => {
     if (error) {
       console.log(error);
     }
     localStorage.setItem('profile', JSON.stringify(profile));
     localStorage.setItem('id_token', id_token);
   });
 }

我会重命名
ngOnInit()
类似
getAllGuests()
的东西,然后从
ngOnInit()
auth.login()中调用
getAllGuests()

如果您不能或不想在
auth.login()
中插入此调用,我想事情可能会变得更加微妙,需要使用Observable的某种订阅机制,但在启动此路径之前,我会确保您确实需要它


我希望这有帮助

我会重命名
ngOnInit()
类似于
getAllGuests()
的东西,然后从
ngOnInit()
内和
auth.login()内调用
getAllGuests()

如果您不能或不想在
auth.login()
中插入此调用,我想事情可能会变得更加微妙,需要使用Observable的某种订阅机制,但在启动此路径之前,我会确保您确实需要它


我希望这有帮助

这是Picci答案的扩展,我会在订阅登录()时调用getAllGuests:


这是Picci答案的扩展,我将在订阅login()时调用getAllGuests:


ngOnInit()
中的代码似乎与当前登录状态无关。为什么要再次执行
ngOnInit()
?ngOnInit()
中的代码似乎与当前登录状态无关。为什么要再次执行
ngOnInit()
?因此,我的
this.auth.login()
服务必须从登录返回一个可观察的成功?它必须返回可观察的。查看此帖子了解更多详细信息:您能给我一个建议吗?登录成功后如何启动“getAllGuestd”方法?在订阅登录中调用“getAllGuestId()。这将确保在登录完成/成功后调用它。因此,我的
This.auth.login()
服务必须从登录返回一个可观察的成功?它必须返回可观察的。查看此帖子了解更多详细信息:您能给我一个建议吗?登录成功后如何启动“getAllGuestd”方法?在订阅登录中调用“getAllGuestId()。这将确保在登录完成/成功后调用它。
 ngOnInit(){
    this.getAllGuests();
    }

    getAllGuests() {
        this.loading = true;
        this._guestService.getAllGuests()
            .subscribe(
                guests => this.guests = guests,
                err => console.log(err),
                () => console.log('Request Complete')
             )
    }  

    login() {
        this.auth.login().subscribe(()=> this.getAllGuests());
    }
    logout() {
        this.auth.logout();
    }