【问题标题】:Rendering route within clicked component's router-outlet在单击的组件的路由器插座中渲染路由
【发布时间】:2020-08-15 17:42:09
【问题描述】:

我有一个项目列表,我希望允许用户单击该项目并在其下方显示更多信息。为了做到这一点,我在每个项目组件中放置了一个路由器插座,并将相关路径分配给路由模块。但是,当单击时,它不会在单击的组件中呈现信息,而是将信息放在最后一个项目组件的路由器插座中。有没有办法只在点击的组件内呈现数据?

路由模块:

path: 'items', component: ItemListComponent,
  children:[
    {
      path: 'detail/:item_id', component: ItemDetailComponent 
    }

itemDetailComponent.html

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

<router-outlet></router-outlet>

这是我想要的功能的图示:

【问题讨论】:

    标签: angular routes


    【解决方案1】:

    虽然我不建议在内部组件仅在点击时显示时使用路由来实现它,但您可以使用以下方法完成它:

    链接界面

    interface Link {
      path: [string, number];
      label: string;
    }
    

    组件

    public links: Link[] = [
      {
        label: 'route 1',
        path: ["detail", 1],
      },
      {
        label: 'route 2',
        path: ["detail", 2],
      },
    ]
    
    public activeLink: Link;
    

    模板

    <div *ngFor="let link of links" (click)="activeLink = link">
    
      <a [routerLink]="link.path">{{link.label}}</a>
    
      <router-outlet *ngIf="link == activeLink"></router-outlet>
      
    </div>
    

    【讨论】:

    • 这工作谢谢!我需要使用路由进行此操作的原因是我需要能够链接到扩展的项目,但仍然有它后面的列表。我不确定是否有一种常见的方式来完成这个角,但我似乎找不到任何东西。
    猜你喜欢
    • 2017-04-23
    • 2017-04-29
    • 2018-07-28
    • 2021-03-13
    • 2017-02-15
    • 2022-01-18
    • 2019-04-25
    • 2017-06-02
    • 2022-10-23
    相关资源
    最近更新 更多