Angular 7 多个路由器插座,用于仪表板应用程序



我有一个用于显示主页、仪表板、申请表的主要插座。

仪表板是一个库,用于显示不同类型的磁贴,如图表、表格。

我希望仪表板的每个磁贴中都有一个出口来显示图表或表格。

由于有多个磁贴实例,并且每个磁

贴中的出口相同,因此恐怕每个磁贴都会响应对/tile/chart 或/tile/table 的导航请求。 我应该能够区分每个瓷砖插座。

主要插座 -> 主页、仪表板、请求。

仪表板 -> 使用另一个插座平铺组件以显示图表/列表。

首页组件

  <router-outlet></router-outlet>  //outlet for dashboard, request

路线

  {
    path: 'dashboard',
    component: DashboardComponent  //main outlet
  }, 
  {
    path: 'home',
    component: HomeComponent       // main outlet 
  }

仪表板组件:

   <Tile> --outlet for chart/table -- </Tile> //Tile 1
   <Tile> --outlet for chart/Table -- </Tile> //Tile 2 and so on.
如果我

理解正确,您不需要嵌套的插座/子路由,因为您不打算以某种方式导航到图表/表格。计划根据 URL 更改内容时常用的路由。例如,您的仪表板上有多个页面,并希望让用户在它们之间切换。然后你应该有像/dashboard/1/dashboard/2等路线。但据我了解,您想显示带有动态定义的磁贴/小部件的仪表板,对吧?因此,您所需要的只是一些定义要显示的内容的数据结构和一些用于显示这些内容的组件集。您将有 1 个主要组件 - dashboard 个包含路径/dashboard和一些组件,每个组件显示 1 种类型的切片。像这样:

<div *ngFor="let line of widgetLines; let i = index">
    <div *ngFor="let group of line.groups; let j = index">
        <div *ngFor="let widget of group.widgets; let k = index">
            <ng-container [ngSwitch]="widget.type">
                <db-widget-one *ngSwitchCase="1" [data]="widget.data" (onSettingsUpdated)="updateWidget(i, j, k, $event)"></db-widget-one>
                <db-widget-two *ngSwitchCase="2" [data]="widget.data" (onSettingsUpdated)="updateWidget(i, j, k, $event)"></db-widget-two>
                <db-widget-three *ngSwitchCase="3" [data]="widget.data" (onSettingsUpdated)="updateWidget(i, j, k, $event)"></db-widget-three>
                <div *ngSwitchDefault>Unknown widget type: {{widget.type | json}}</div>
            </ng-container>
        </div>
    </div>
</div>

最新更新