问题在于当我在两个相似的URL之间导航时,我的组件没有重新绘制。例如,当用户查看
如何解决这个问题?
我的路由:
当我在不同研究的细节之间导航时,
http://localhost:8088/#/app/route/study/6/detail
,然后导航到 http://localhost:8088/#/app/route/study/7/detail
时,StudyComponent
被正确重新加载,但是DetailComponent
没有被重新加载。我认为原因是详细信息的params
没有更改,因此Angular认为不需要重新加载。但在我的情况下,详细信息依赖于父级参数。如何解决这个问题?
我的路由:
const studyRoutes: Routes = [
{
path: '', component: RouteComponent,
children: [
{path: 'study/:id', component: StudyComponent,
children: [
{path: 'detail', component: DetailComponent },
{path: 'parts', component: PartsComponent }
]
}
]
}
];
我的所有组件都是这样初始化的:
ngOnInit() {
this.loader = this.route.params.subscribe(params => this.onLoad());
}
ngOnDestroy() {
this.loader.unsubscribe();
}
当我在不同研究的细节之间导航时,
DetailComponent
中的 onLoad
从未被调用。
DetailComponent
,这是路由器的默认重用策略。请参见https://medium.com/@juliapassynkova/angular-2-component-reuse-strategy-9f3ddfab23f5。 - Jota.Toledothis.route
是注入的ActivatedRoute
。我不依赖于ngOnInit
被调用。但是,我期望this.onLoad
被调用,但它并没有被调用。 - John Henckel