我正在尝试启动并运行角度提前编译(AOT),它无法在@NgModule中的providers变量中推送元素。
...
const providers: any[] = [
someService
];
if (environment.useMockBackend) {
providers.push({
provide: HTTP_INTERCEPTORS,
useClass: MockHttpInterceptor,
multi: true
});
}
}
@NgModule({
imports: [
CommonModule,
HttpClientModule,
RouterModule
],
providers: providers
})
export class CoreModule {
...
}
但它没有提前工作。但是我们应该等待下一个版本的Angular修复AOT吗?或者有可能以这种方式解决这个问题吗?
为了进一步澄清,NgModule装饰器中的providers属性在初始化后对MockHttpInterceptor不起作用,相反,如果我们修改它类似于以下内容它将起作用:
const providers: any[] = [
ReviewService,
{
provide: environment.useMockBackend ? HTTP_INTERCEPTORS : '',
useClass: environment.useMockBackend ? MockHttpInterceptor : '',
multi: true
}
];
然而,我们主要做的不是好的做法