首先,我要提到我已经完成了先决条件,并在谷歌和 S/O 中搜索了解决方案,发现这要么是未更新的 3rd 部分模块上的通用故障错误,要么定义的解决方案没有帮助。我跟着他们仍然无济于事。
我得到:
">应用程序模块"模板编译期间出错 装饰器不支持函数调用,但调用了"XXXModule"。
我知道我不允许在 NgModule 声明中使用函数,但我在提供程序上明确列出了工厂的使用。除此之外,没有超越forRoot的函数。
有人可以指出我正确的方向吗?
我正在尝试在应用程序模块中注册模块
app.module.ts:
import etc... all done
@NgModule({
imports: [
XXXModule.forRoot(),
BrowserModule,
xxx.module.ts:
@NgModule({
imports: [
CommonModule,
HttpClientModule
],
providers: [
AuthenticationService,
{ provide: CookieService, useFactory: cookieServiceFactory }
]
})
export class XXXModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: XXXModule,
providers: [
{ provide: XXXConfig, useFactory: xxxFactory}
]
}
}
}
我在同一文件中也有工厂:
export function cookieServiceFactory() { return new CookieService(); }
export function xxxFactory(): XXXConfig{
return {authUrl: `${environment.apiUrl}/api/authorisation`};
}
在一个单独的文件中,我定义了XXXConfig,这很好导入。
export class XXXConfig {
authUrl: string;
}
这个问题已经解决了。代码引用了错误的内部代码。由于它以前被包装过,进口是从不同的地方拉来的。一旦这些在新软件包中得到纠正,它就可以正常工作。
模块的不匹配版本可能会导致此问题。 我对Angular NgxUiLoaderModule有同样的问题。
"错误:在模板编译'AppModule'期间出错 装饰器不支持函数调用,但调用了'NgxUiLoaderModule'。
我有 Angular 11,所以我安装了 ngx-ui-loader@11.0.0 解决了我的问题。 npm i --save ngx-ui-loader@11.0.0