在Angular 2 ngModule中有条件地声明指令

时间:2016-11-08 17:49:46

标签: angular angular2-aot

在Angular 2中,我只想在全局javascript变量设置为true(debug boolean)时在ngModule中声明一个指令。

使用tsc编译时这是有用的:

declare let isDebug: boolean;
let dependencyArray : any[] = [];

if ('undefined' !== typeof isDebug && isDebug) {
  dependencyArray.push(DebugDirective);
}

@NgModule({
  declarations: [AppComponent].concat(dependencyArray),
  imports: []
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

然而,似乎比ngc编译器(AOT编译)不接受模块文件中的函数调用。 ngc抛出以下错误。

  

在静态解析符号值时遇到错误。不支持函数调用。考虑使用对导出函数的引用替换函数或lambda

我找到了各种线程,解释了如何使用带有导出函数的工厂(例如https://github.com/angular/angular/issues/11262),但我还没有找到如何为声明数组做同样的事情。

如何解决模块声明的问题?

1 个答案:

答案 0 :(得分:0)

如何导出函数(返回any [])和指向函数引用的声明指令。