我想通过再次路由到同一路由器来刷新数据。当有第二个(或更多)路由到当前激活的路由时,Angular不会激活ngOnInit组件功能。我想启用每当路由时刷新组件上的数据(即使它已经激活的路由)。我知道执行此操作的技术很少,但是我想使用RouterEvent和
NavigationEnd技术。我知道我需要在导航栏中设置onSameUrlNavigation
RouteModule。
由于某种原因,我无法达到所需的方案。
看我的代码:
这是单击按钮时触发的事件(单击按钮两次应将两次路由到同一组件):
openMapTool(item: MapToolsItem)
{
this.router.navigate([{ outlets: { <Name of router outlet>: ['SomePath', { param1: value1}] }}],);
return false;
}
这是与“ SomePath”路径相关的组件(请参见下文-“ SomeComponent”)-应该路由两次的组件:
ngOnInit() {
this.subs.push(this.route.events.pipe(
filter(e => e instanceof RouterEvent && e instanceof NavigationEnd),
).subscribe(e =>
{
this.doSomething(e.paramMap);
}));
这是包含“ SomePath”路径的模块:
const routes: Routes = [
{ path: 'SomePath', component: SomeComponent, outlet: 'SomeRouterOutlet'}];
@NgModule({
imports: [
RouterModule.forChild(routes),
RouterModule.forRoot(routes, {onSameUrlNavigation:'reload'})]})
谢谢您的帮助
答案 0 :(得分:0)
看起来您的组件已缓存,然后重新使用。检查是否在您的app.module.ts中定义了RouteReuseStrategy
。在这种情况下,您应该以编程方式从RouteReuseStrategy
类的缓存中清除组件。
app.module.ts
providers: [
{ provide: RouteReuseStrategy, useClass: <class name>}
要访问app.module.ts
中定义的类,请使用Router.routeReuseStrategy
答案 1 :(得分:0)
您可以尝试订阅routePrams并采取相应的措施。
this.route.params.subscribe(params =>
// Do something
});