【问题标题】:Parent component not hides in Angular router父组件不隐藏在 Angular 路由器中
【发布时间】:2020-10-27 15:25:42
【问题描述】:

我有一个 appComponent,我在其中显示工具栏、页脚和主要内容。此主要内容使用router-outlet 指令。是这样的

<div class="h-100">
    <app-toolbar></app-toolbar>
    <app-breadcrumb></app-breadcrumb>
    <div class="container h-100">
      <router-outlet></router-outlet>
    </div>
</div>

在工具栏中,我有一个包含一些项目的菜单。例如

<button [routerLink]="['/list']" routerLinkActiveOptions="{exact:true}">List</button>

当我点击按钮时,我可以显示该页面的内容(因为路由器插座)。我现在可以显示一个包含一些内容的表格,它工作正常。现在,我需要单击一行并显示该行本身的详细信息。为此,我只是在做这样的事情

<a [routerLink]="['detail/',row.id]">{{value}}</a>

在此表的同一页面中(我使用的是ngx-datatable)我还有另一个&lt;router-outlet&gt;&lt;/router-outlet&gt;。例如,通过这种方式,我现在可以在 url ".../detail/0" 处显示另一个组件。这称为DetailComponent。有什么问题?对于仍保留在那里的父组件(表),一切正常。当我单击一行时,该表不会消失,而是停留在那里并在其下方,出现子组件。顺便说一下,这是我的routes

const routes: Routes = [
{
    path: 'list', 
    component: ListComponent, 
    canActivate : [AuthguardService], 
    children: [
      {
        path: 'detail/:id', component: DetailComponent, canActivate : [AuthguardService],
        data: {
          breadcrumb: ''
        }
      }
     ],
     data: {
      breadcrumb: 'List'
    } 
  },{
    path: '', redirectTo: '/home', pathMatch: 'full'
  },
  { path: '**', redirectTo: '' }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { enableTracing: false })],
  exports: [RouterModule]
})
export class AppRoutingModule { }

我还尝试从 ListComponent 中删除 &lt;router-outlet&gt;&lt;/router-outlet&gt;,但如果这样做,子组件不会显示

https://stackblitz.com/edit/angular-router-basic-example-n2uzis?file=app/views/details/detail.component.ts

【问题讨论】:

    标签: angular typescript router angular-router angular-load-children


    【解决方案1】:

    这是当前路线设置的预期行为。

    为了修复它,应该有一个包装器组件而不是 ListComponent,并且列表组件也应该像 DetailComponent 一样是它的子组件。

    在路由下列为子组件的组件不会使父组件消失,父组件将成为锚点,并且它的子组件将被渲染到您在父组件中放置路由器插座的位置。

    【讨论】:

    • 那么,ListComponent 和 DetailComponent 的父组件可以只包含 吗?还是什么?
    • 是的,或者一些简单的布局可以将它们正确地放置在屏幕上。
    • 在我创建一个只有 的父组件时,我什么都看不到
    • 如果你能提供一个stackblitz MRE,我可以帮你实现。
    • 好的,我马上要创建一个堆栈闪电战
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2018-07-24
    • 2019-04-12
    • 2017-12-03
    相关资源
    最近更新 更多