在Angular 7中将工厂方法从AppModule移至AppComponent

时间:2019-03-06 12:53:37

标签: javascript angular typescript angular-components angular-module

我使用ngx-translate-multi-http-loader加载程序来创建特定的翻译。该文档要求必须在app.module.ts中创建该工厂:

export function multiTranslateHttpLoaderFactory(http: HttpClient) {
  return new MultiTranslateHttpLoader(http, [
    {prefix: './assets/i18n/default/', suffix: '.json'},
    {prefix: './assets/i18n/bc/', suffix: '.json'}
  ]);
}

通过以下方式在导入数组中配置此工厂:

TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useFactory: multiTranslateHttpLoaderFactory,
    deps: [HttpClient]
  }
}),

我需要一种将工厂放入我的app.component.ts中的方法,因为我仍然必须编写一些逻辑并且不想在我的app.module.ts中这样做。

但是,如果我将方法移到我的app.component.ts中,并在文件顶部添加了所有必需的import语句,则angular不会编译并返回以下错误消息:

  src / app / app.module.ts中的

ERROR(55,21):错误TS2304:找不到   名称为“ multiTranslateHttpLoaderFactory”。

是否有可能或真的必须在app.module.ts中定义工厂?

1 个答案:

答案 0 :(得分:0)

在何处定义工厂或与此相关的任何其他函数都无关紧要。只要确保将其正确导入,即可app.module.ts

顶部
import {multiTranslateHttpLoaderFactory} from 'path/to/your/component'