angular5动态分量分解器
我有多个模块,每个模块都包含各种组件,还有一个父组件需要包含其中一个组件 由于我无法使用路由来实现这一点,因此我编写了一个服务,该服务给定一个angular5动态分量分解器,angular,dependency-injection,angular5,angular-aot,angular6,Angular,Dependency Injection,Angular5,Angular Aot,Angular6,我有多个模块,每个模块都包含各种组件,还有一个父组件需要包含其中一个组件 由于我无法使用路由来实现这一点,因此我编写了一个服务,该服务给定一个moduleName:string,一个componentname:string返回相应的组件类 请参阅中的ComponentDirectoryService 我在模仿路由器模块如何允许功能模块注入自己的路由: ComponentDirectoryModule有一个forRoot和forChild方法,向这些方法传递目录项值 每个功能模块(stackbl
moduleName:string
,一个componentname:string
返回相应的组件类
请参阅中的ComponentDirectoryService
我在模仿路由器模块如何允许功能模块注入自己的路由:
有一个ComponentDirectoryModule
和forRoot
方法,向这些方法传递forChild
值目录项
- 每个功能模块(stackblitz中的p1和p2)调用
以提供其forChild
目录\u条目
- AppModule调用
,它提供forRoot
传递ComponentDirectoryService
目录项的累积值(调用
)forChild
export const ROUTES=new InjectionToken('ROUTES')代码>
我对目录_条目也是如此:
export const DIRECTORY_ENTRIES=new InjectionToken('DIRECTORY_ENTRIES')代码>编译器遗漏了关于应该实际注入到服务中的内容的信息
这就是为什么需要显式使用@Inject()
decorator指出:
constructor(@Inject(DIRECTORY_ENTRIES) private entries: ComponentDirectoryEntry[]) { }
这将在内部将元数据标志设置为属性entries
,使用此元数据将知道应该在此处注入DIRECTORY\u entries
。看起来发生这种情况是因为使用数组作为注入对象,这可能是问题的原因,因为AoT试图找到负责的类对于那个令牌,它失败了。可能值得尝试使用显式insteadHello,我不确定我是否理解显式注入令牌的含义;我用如何声明令牌和路由器的意思更新了这个问题:在构造函数中尝试使用Inject()
:constructor(@Inject(DIRECTORY\u ENTRIES)private ENTRIES:ComponentDirectoryEntry[]){}