【发布时间】:2018-03-30 20:58:26
【问题描述】:
我有一个切换到商店的功能,它由标题组件控制并显示该场所的仪表板。
在该标题组件中,我导航到仪表板路线,即使我已经在该路线中。
this.router.navigate(['/venues', this.currentVenue._id, 'dashboard']);
但它不会再次触发 ngOnInit 钩子,因此我的视图不会重新加载。
这种情况的正确解决方法是什么?
【问题讨论】:
我有一个切换到商店的功能,它由标题组件控制并显示该场所的仪表板。
在该标题组件中,我导航到仪表板路线,即使我已经在该路线中。
this.router.navigate(['/venues', this.currentVenue._id, 'dashboard']);
但它不会再次触发 ngOnInit 钩子,因此我的视图不会重新加载。
这种情况的正确解决方法是什么?
【问题讨论】:
您需要重新加载视图吗?还是只是重新获取一些数据?
如果只需要根据路由参数重新获取数据,可以这样做:
ngOnInit(): void {
this.route.params.subscribe(
params => {
const id = +params['id'];
this.getMovie(id); // <- Or whatever you need to do here
}
);
}
在 ngOnInit 中,这段代码订阅了路由参数。所以每次参数改变时,即使视图没有改变/重新加载,改变也会作为订阅的一部分被拾取并执行相关的回调。
【讨论】: