在我的home.component.ts
中,我的ngOnInit
方法是:
ngOnInit() {
console.log("ngoninitcalled");
this.activatedRoute.queryParams.subscribe((params:Params) => {
let refresh = params['refresh'];
if(refresh){
// do something refreshing
}
}
}
这是我的customFunction
customFunction(email: string, username:string) {
// do something custom
this.router.navigate([''],{queryParams: {refresh:true}});
}
"路由重定向到home.component.ts
或HomeComponent(其片段如上(。
在检查控制台日志时,我看到当使用来自其他组件的刷新参数(通过 this.router.navigate([''], {queryParams: {refresh:true}}
(调用 HomeComponent 时,调用了 ngOnInit((。但是如果它从HomeComponent本身调用(如上面的代码(,则不会调用ngOnInit((。
那么这是预期的行为吗,我可以在自定义函数中的router.navigate
之后安全地调用this.ngOnInit()
以手动调用ngOnInit()
(假设如果从自身重定向到ngOnInit
将永远不会调用(?
预期行为是,当导航到具有不同参数的同一组件时,不会调用 ngOnInit。
但是您不应该手动调用ngOnInit。
每次参数更改时,订阅都会收到通知。因此,订阅方法中的代码每次都会执行。你不需要打电话给ngOnInit。
通过在订阅中移动主机.log尝试一下。