我有多个模块,每个模块都包含各种组件,以及需要包含这些组件之一的父组件。
由于我无法使用路由来实现这一点,因此我编写了一个服务,它给出了 amoduleName :string
和 acompomnentName : string
返回相应的组件类。
请参阅此 stackblitzComponentDirectoryService
。
我模仿路由器模块如何允许功能模块注入自己的路由:
ComponentDirectoryModule
有一个值被传递到forRoot
的forChild
方法DIRECTORY_ENTRIES
- 每个功能模块(stackblitz 中的 p1 和 p2)调用
forChild
以提供其DIRECTORY_ENTRIES
- AppModule 调用
forRoot
,它提供ComponentDirectoryService
传入的累积(调用forChild
)值DIRECTORY_ENTRIES
在开发模式下一切正常。
在生产模式下一切正常,但我收到了这个可怕的警告:
无法解析 ...component-directory.service.ts: (?) 中 ComponentDirectoryService 的所有参数。这将成为 Angular v6.x 中的错误
令我困惑的是,服务的唯一参数是目录条目......
编辑 1
就像 Angular 声明 ROUTES 注入令牌一样:
export const ROUTES = new InjectionToken<Route[][]>('ROUTES');
我对 DIRECTORY_ENTRIES 也是如此:
export const DIRECTORY_ENTRIES = new InjectionToken<ComponentDirectoryEntry[][]>('DIRECTORY_ENTRIES');