角延迟加载模块重新加载不起作用

时间:2020-05-05 15:37:24

标签: angular angular-ui-router angular-routing

我已经实现了延迟加载模块,并且在模块的路由内部,我正在加载子组件,

喜欢这个。

  const routes: Routes = [
  {
    path: "",
    component: CustomerListComponent,
    children: [
      {
        path: "child",
        component: CustomerChildComponent
      }
    ]
  }
];

在CustomerListComponent的OnInit中,我导航到以下子组件

export class CustomerListComponent implements OnInit {
constructor(private router: Router) {}
  ngOnInit() {
    this.router.navigate(["customers/child"]);
  }
}

我的问题是,如果我单击正在重定向/加载到该模块的菜单/按钮,则第一次可以正常工作,并且一旦加载了该模块,再次单击该菜单/按钮,就不会重新加载/重定向到该模块。像这样的'/ customers / child'子组件,它被加载为 '/ customers

所以我的问题是,我第一次可以同时看到“客户”和“孩子”组件,但是在下一次单击时,我只能看到“客户”组件。

在我的实时场景中,我在客户组件中保留了一个选项卡和一个网格,该网格应可用于所有选项卡,

在“客户”组件的路由器出口中,我正在加载子组件。

因此,在第二次单击中,我仅看到围栏,但看到的是子组件。

我已经尝试在此Stackblitz

中模拟问题

在该堆叠闪电中,您会注意到,第二次单击“客户”按钮时,将从路由中删除该子项。

请帮助

1 个答案:

答案 0 :(得分:0)

我通过在构造函数中添加以下代码来解决此问题

this.subscriptions.add(router.events.subscribe((evt: any) => {
  if (evt.url === '/customers') {
    this.router.navigateByUrl('/customers/child');
  }
}));