Angular 如何避免级联ngOnInit?

Angular 如何避免级联ngOnInit?,angular,angular2-routing,angular2-template,ngoninit,Angular,Angular2 Routing,Angular2 Template,Ngoninit,我有两个部分与父母和孩子的关系。父组件的ngOnInit方法检查用户是否登录,如果未登录,则导航到登录页面 class ParentComponent implements OnInit{ ngOnInit(){ if(!authService.loggedIn){ //navigate to login screen code return; } } } class ChildComponent i

我有两个部分与父母和孩子的关系。父组件的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
    }
}

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

在我看来,您不应该检查用户是否已登录并离开某个组件。您应该改为使用

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

<child *ngIf="isLoggedIn()"></child>


这将阻止在用户未登录的情况下创建子组件。

在我看来,您不应该检查用户是否已登录并离开组件。您应该改为使用

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

<child *ngIf="isLoggedIn()"></child>


这将阻止在用户未登录的情况下创建子组件。

我知道URL保护,但我认为仅从家长的ngOnInit返回会起作用,但它不起作用。URL保护当然是正确的方法,它发生在组件初始化之前的导航过程中。非常感谢,伙计。我知道URL保护,但我认为只要从父母的ngOnInit返回就行了,但不是那样。URL保护当然是正确的方法,它发生在组件初始化之前的导航过程中。非常感谢,伙计。