Angular 如何避免级联ngOnInit?
我有两个部分与父母和孩子的关系。父组件的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
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保护当然是正确的方法,它发生在组件初始化之前的导航过程中。非常感谢,伙计。