angular - Angular - 运行 forRoot 函数时出现问题
问题描述
我有一个奇怪的 TS 问题,我只是在从 Angular 5.x 升级到 7.x 后才开始遇到的。
对于下面的这段代码,特别是对 的forRoot
调用LibCoreModule
,我收到此错误:
错误类型 'ModuleWithProviders' 不可分配给类型 'any[] | 类型'。类型“ModuleWithProviders”不可分配给类型“类型”。“ModuleWithProviders”类型中缺少属性“应用”。
代码:
@NgModule({
imports: [
...
],
exports: [
...
]
})
export class LibCoreModule {
public static forRoot(configFactory, deps = []): ModuleWithProviders {
return {
ngModule: LibCoreModule,
providers: [
{provide: CoreConfig, useFactory: configFactory, deps: deps}
]
};
}
}
export function coreFactory(): CoreConfig {
return {
api: environment.api
};
}
@NgModule({
declarations: [
AppComponent,
// SHOWS ERROR
LibCoreModule.forRoot(coreFactory, [])
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
我试图查看他们是否将任何内容从 v5 更改为 v7,但我没有发现任何特别的内容。
有谁知道如何解决这个问题?
解决方案
你应该LibCoreModule.forRoot(coreFactory, [])
从属性declarations
转移imports
,我认为这可以解决你的问题,因为模块应该注入到导入属性中
推荐阅读
- python - TextGenRnn 将生成的文本保存到文件
- swift - 如何在 Sygic 中获得我的导航速度
- python - plt.hist - 计数的权重因子为 0.0667
- php - 做 ajax 的 WordPress 总是返回 0,但在某些情况下应该返回 1
- batch-file - goto 后批处理崩溃
- python - 设置 plt.ylim 时极坐标图未正确填充
- xml - xmlstarlet 不适用于 xml 版本 1.1 文件。与 Bash 一起使用的任何替代方法?
- java - KRUSKAL 最小生成树
- angular - 未捕获的错误:模板解析错误:意外的结束标记“表单”。当标签已被另一个标签关闭时,可能会发生这种情况
- python-3.x - 图表是颠倒的