如何避免级联 ngOnInit?
How to avoid cascading 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 调用?
IMO,您不应检查用户是否已登录并离开组件。您应该改用 guard 来做到这一点。
但是,要回答您的问题,您可以使用
<child *ngIf="isLoggedIn()"></child>
如果用户未登录,这将阻止创建子组件。
我有两个具有父子关系的组件。父组件的 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 调用?
IMO,您不应检查用户是否已登录并离开组件。您应该改用 guard 来做到这一点。
但是,要回答您的问题,您可以使用
<child *ngIf="isLoggedIn()"></child>
如果用户未登录,这将阻止创建子组件。