如何避免级联ngOnInit?

时间:2017-05-08 20:49:30

标签: angular angular2-routing angular2-template ngoninit

我有两个有父母和子女关系的组件。父组件的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调用?

1 个答案:

答案 0 :(得分:4)

IMO,您不应该检查用户是否已登录并离开组件。您应该使用guard来执行此操作。

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

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

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