我正在将mat-accordion
与router-outlet
一起使用,并观察到一种奇怪的行为。以下是我的用例的示例实现。
https://stackblitz.com/edit/angular-material-accordion-with-router
在此示例中,面板3组件和面板4组件具有router-outlet
。
现在,在第一次导航中,它可以按预期工作。但是,如果我折叠这些面板,然后再次尝试打开它们,我会发现面板4的内容会反映在面板3中。
我不确定这是angular-router
中的错误还是在这里做错了。
答案 0 :(得分:1)
您已经将路线和出口与非路线和组件混淆了。路线用于显示插座中的指定组件,而模板使用这些组件。您应该只做一件事-要么将组件直接放在模板中,要么使用一条路线将其显示在插座中。
您的模板将所有四个“面板”组件放置在页面上,其中两个(3和4)定义了插座。因此,页面上有两个出口。由于未命名,因此它们都试图成为路由器的默认或“主要”出口,因此,任何未定向到命名出口(这是您的所有路由)的路由都将转到其中一个(或者也许是两者-我不知道Angular如何处理)。
您还将路线用于非路线的组件(面板1和2)。例如,如果打开面板1,然后打开DOM检查器,则将在面板3或4的插座中看到另一个面板1组件。
解决方法是从路由中删除不是实际路由的组件-“ panel1”和“ panel2”,并命名两个插座,并使用路由器和链接配置来定位这些插座。