提前编译无法在提供者变量

时间:2017-12-02 12:25:38

标签: angular typescript angular2-aot aot

我正在尝试启动并运行角度提前编译(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
  }
];

然而,我们主要做的不是好的做法

0 个答案:

没有答案
相关问题