如何避免级联ngOnInit?

mda*_*shs 1 angular2-template angular2-routing ngoninit angular

我有两个与父子关系相关的组件。父组件的 ngOnInit 方法检查用户是否登录,如果未登录,则导航到登录页面。

class ParentComponent implements OnInit{
    ngOnInit(){
        if(!authService.loggedIn){ 
           //navigate to login screen code
           return;
        }
    }
}

class ChildComponent implements OnInit{
    ngOnInit(){
        /** POINT TO BE NOTED **/
        // this function is also called even if ngOnInit 
        // of parent navigates to different component and returns.
        // do some stuff with userService.token
        // but because token isn't available the calls fail
    }
}
Run Code Online (Sandbox Code Playgroud)

如果父组件想要导航到其他组件,如何阻止此级联 OnInit 调用?

JB *_*zet 5

IMO,您不应该检查用户是否登录并离开组件。你应该使用守卫来做到这一点。

但是,要回答你的问题,你可以使用

<child *ngIf="isLoggedIn()"></child>
Run Code Online (Sandbox Code Playgroud)

如果用户未登录,这将阻止创建子组件。