使用'nested'路由器在垫手风琴中加载不正确的组件



我正在使用mat-accordionrouter-outlet一起观察奇怪的行为。以下是我用例的示例实现。
https://stackblitz.com/edit/angular-material-accordion-with-router

在此示例中,面板3组件和面板4组件具有router-outlet。现在,在第一次导航中它可以按预期工作。但是,如果我崩溃了这些面板并再次尝试打开它们,我会发现面板4的内容会反映在面板3中。

我不确定它是angular-router中的错误还是我在这里做错了什么。

已将路由和插座与非路由和组件混合在一起。路由用于在插座中显示指定的组件,并且您的模板使用相同的组件。您应该只做一个或另一个 - 要么将组件直接放在模板中,要么使用路由将其显示在插座中。

您的模板将所有四个"面板"组件放在页面上,其中两个(3和4(定义了出口。因此,您的页面上有两个插座。由于它们没有命名,因此它们都试图成为路由器的默认或"主要"插座,因此任何不针对指定插座的路由(这是您的所有路由(都将用于其中之一(或者也许是两者 - 我不知道角度如何处理(。

您还在使用不路由的组件(面板1和2(的路由。例如,如果打开面板1,然后打开DOM Inspector,您将在面板3或4的插座中看到另一个面板1组件。

修复程序是删除不是路由 - 'panel1'和'panel2'的不是实际路由的组件,并使用路由器和链接配置来命名两个插座,并针对这些插座。

stackblitz

最新更新