仅在某些情况下会发生这种情况(通常是在早上打开应用程序之后)。
我们正在使用SwUpdate来更新应用程序,并且这种现象似乎与更新时间一致。 结果html看起来像这样:
<app-root _nghost-vrt-c0="" ng-version="7.2.15">
<router-outlet _ngcontent-vrt-c0=""></router-outlet>
<app-layout _nghost-vrt-c4="">
<div _ngcontent-vrt-c4="" class="app-class">
<router-outlet _ngcontent-vrt-c4=""></router-outlet>
<app-component-1 _nghost-vrt-c7="">
</app-component-1>
<app-component-1 _nghost-vrt-c7="">
</app-component-1>
</div>
</app-layout>
</app-root>
问题是重复的app-component-1。在正常情况下,它仅渲染一次。 我无法找到解决方案,甚至无法描述此问题。 感谢任何帮助。
相关路由规则:
const routes: Routes = [
{
path: '',
component: Layout,
canActivate: [AuthGuard],
children: [
{ path: 'home', loadChildren: './home/home.module#HomeModule'},
{ path: 'otherRoute', loadChildren: './otherRoute/otherRoute.module#OtherRouteModule'},
{ path: '', redirectTo: 'home', pathMatch: 'full' },
]
}
{ path: 'under-construction', component: UnderConstructionComponent, data: { title: 'Under Construction' } },
{ path: '**', redirectTo: 'under-construction' },
]
这是布局模板:
<div class="tm-app">
<div >
<app-menu></app-menu>
<div>
<div>
<app-top-bar></app-top-bar>
</div>
<router-outlet></router-outlet>
</div>
</div>
我尽可能地从布局和输出中清理代码,以确保代码库的安全。 我正在编辑此问题以解决问题。因为我还没有找到解决方案。可以吗?
答案 0 :(得分:0)
在我的特定情况下,问题与实现CanActivate
https://angular.io/api/router/CanActivate的路由保护有关。
当守卫返回false
时,路由无法激活(但已创建)。如果同时,警卫也重定向到另一条路线。然后创建一个重复的路由器出口组件。
解决方案:不要从路由保护程序CanActivate重定向。只返回true或false。 替代解决方案:从CanActivate防护程序进行重定向,并始终返回true(在防护程序中进行重定向)。
希望这会有所帮助。