在运行时基于canLoad加载模块

时间:2018-08-08 14:32:50

标签: angular angular-router angular-router-guards

上下文

我有一个基本的管理页面,该页面具有两种实现,具体取决于服务器中的参数。

这是我用于路由器的配置:

      {
        path: 'projects',
        loadChildren: 'app/...#ProjectsAModule',
        canLoad: [PluginGuard],
        data: {
          requiredPlugins: ['foo'],
        },
      },
      {
        path: 'projects',
        loadChildren: 'app/...#ProjectsBModule',
        canLoad: [PluginGuard],
        data: {
          requiredPlugins: ['bar'],
        },
      },

PluginGuard是一个简单的防护措施,它调用服务器来检查名为plugin的字段的值。

根据设计,这两个路由不能同时加载,因为插件在给定时间只能有一个值。

问题

问题是仅考虑第一个条目,这意味着当插件的值为foo时,我可以加载模块ProjectsAModule,但当插件的值为{{1}时},bar根本不会加载,也没有错误消息。

我的猜测是,因为两个路由根本不能具有相同的路径,但是我们是否有办法正确实现这种行为?正确地说,我的意思是不要在容器组件中使用ProjectsBModule来显示一个基于插件值的组件或另一个组件。

0 个答案:

没有答案