【问题标题】:Angular nested routes vs pages角度嵌套路由与页面
【发布时间】:2019-11-03 21:42:32
【问题描述】:

我有一个典型的面向资源的建筑物 REST API:

/建筑物/

/buildings/:buildingId

/buildings/:buildingId/楼层

/buildings/:buildingId/floors/:floorId

我正在编写一个面向此的 Angular 8 应用程序,它应该使用相同的路由。

首先我尝试了嵌套路由:


  {
    path: 'buildings',
    component: BuildingsComponent,
    children: [
      {
        path: ':id',
        component: BuildingComponent,
        children: [
          {
            path: 'floors',
            component: FloorsComponent,
            children: [
              {
                path: ':id',
                component: FloorComponent
              }
            ]
          }
        ]
      }
    ]
  }

但这似乎只支持组件的层次结构。这对我来说意味着我必须将每个父组件的输出保留在屏幕上,在最低级别看起来像这样:

[building list table]
[selected building data]
[floor list table]
[selected floor data]

但是我想要独立的页面:

[building list table]

选择建筑->

[selected building data]
[floor list table]

选择楼层 ->

[selected floor data]

为此,我使用了扁平化路由器配置:

  {
    path: 'buildings',
    component: BuildingsComponent,
  },
  {
    path: 'buildings/:buildingId',
    component: BuildingComponent,
  },
  {
    path: 'buildings/:buildingId/floors/:floorId',
    component: FloorComponent,
  }

但我在这里缺少的是层次结构中的每个组件都从 REST API 获取数据。

对于这种情况,我是否可以使用一种机制,而不必在每个级别(即您所在的级别和所有父级别)都进行所有休息调用?

【问题讨论】:

    标签: angular angular-ui-router


    【解决方案1】:

    您要查找的是resolver。解析器在路由级别进行 API 调用。来自 REST API 的数据将通过您的路由器提供。

    如果您希望减少应用程序的 API 调用量,请考虑使用 caching using interceptors,使用 graphQL 进行查询,或使用 NgRx 更好地管理您的状态。

    【讨论】:

    • 这就是我的扁平路由案例的解决方案。谢谢。我还想知道人们是否经常使用嵌套路由方式并使用样式/条件元素来控制嵌套组件的显示,以至于感觉就像一个子页面。
    • 取决于用例,假设您在同一条路径上设置客户端和管理门户。与其管理单独的项目,不如将更深层的路由(例如 admin/dashboard )视为子页面,因为您可能希望继承特定于门户的页眉和页脚。平面路由结构用于单独的页面,例如products/:idcontact-us
    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多