如何在 Angular 4 中的 router.navigate 之后重新加载视图?

How to reload a view after router.navigate in Angular 4?

我有一个由 header 组件控制的商店功能开关,并显示该地点的仪表板。

在 header 组件中,我导航到仪表板路线,即使我已经在该路线中。

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中,这段代码订阅了路由参数。因此每次参数更改时,即使视图不是 changed/reloaded,更改也会作为订阅的一部分被拾取并执行关联的回调。