无法让 Angular 中的嵌套路由显示在视图中

Cannot get nested routes in Angular to show up in the view

我在 Angular 中的 child/nested 路由遇到了各种麻烦 4. 在 app.module.ts 中的导入语句中,我有:

    RouterModule.forRoot([
        {
            path: 'templates',
            component: TemplateLandingComponent,
            children: [
                {path: 'main-templates', component: MainTemplateComponent}
            ]
        },
    ])

在我的主导航中,我有以下内容:

<li><a [routerLink]="['/templates']" [routerLinkActive]="'active'">Templates</a></li>

这工作正常并将我带到父 TemplateLandingComponent。然后我在 TemplateLandingComponent 中还有另一个 link:

<li><a [routerLink]="['/templates/main-templates']" [routerLinkActive]="'active'">Active Templates</a></li>

单击此 link 路由到正确的 url 但不显示我的 MainTemplateComponent。我做错了什么?

即使我手动导航到 /templates/main-templates,我仍然只看到 TemplateLandingComponent

尝试

<li><a routerLink="/main-templates" [routerLinkActive]="'active'">Active Templates</a></li>

将您的路线更改为此

RouterModule.forRoot([
    {
        path: 'templates',
        children: [
           {path: '', component: TemplateLandingComponent}
            {path: 'main-templates', component: MainTemplateComponent}
        ]
    },
])

或在您的 TemplateLandingComponent 中插入 <router-outlet>。 如果它的 2 个独立组件编写我编写的 routerModule,这取决于你想要什么。它的父子组件在父组件中使用router-outlet。

routerLink 将相对于您当前的路径而不是绝对路径进行导航。