0

在解析器中:

  • 获取数据
  • 根据这些数据构建路由器

之后,我的路由器看起来是这样的:

{
  path: '',
  component: WrapperComponent,
  resolve: {
    traveler: TravelerResolver, // <-- the resolver adds children
  },
  children: [{
    path: 'a',
    component: AComponent,
    children: [{
      path: 'sub-a',
      component: SubAComponent,
    }, {
      path: 'sub-b',
      component: SubBComponent,
    }],
  }, {
    path: 'b',
    component: AComponent,
    children: [{
      path: 'sub-a-prime',
      component: SubAprimeComponent,
    }, {
      path: 'sub-b-prime',
      component: SubBprimeComponent,
    }],
  }],
}

所以我可以导航到/a/sub-a例如。发生的事情是在重新加载时,不再调用解析器来生成路由。

是否可以再次调用它,或者我的情况是否有更好的模式?

编辑。

我做了一个stackblitz:

https://stackblitz.com/edit/angular-ivy-4yen6w

4

1 回答 1

1

可以通过runGuardsAndResolvers在根路由上设置属性来实现。是一个关于它是如何工作的非常快速的解释。

我已经为你创建了一个StackBlitz来展示它的实际效果。代码的主要部分如下:

const routes: Route[] = [
  {
    path: "",
    component: HelloComponent,
    resolve: {
      traveler: TravelerResolver // <-- the resolver adds children
    },
    // by specifying 'always', guards and resolvers will run any time the url changes
    runGuardsAndResolvers: 'always', 
    children: [
      {
        path: "resolverTest",
        component: HelloComponent
      }
    ]
  }
];
于 2020-10-02T10:21:48.163 回答