【问题标题】:Move factory method from AppModule to AppComponent in Angular 7在 Angular 7 中将工厂方法从 AppModule 移动到 AppComponent
【发布时间】:2019-07-28 03:33:24
【问题描述】:

我使用ngx-translate-multi-http-loader 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 中并在文件顶部创建所有必要的导入语句,则 angular 不会编译并返回此错误消息:

src/app/app.module.ts (55,21) 中的错误:错误 TS2304: 找不到 名称“multiTranslateHttpLoaderFactory”。

有没有可能或者我真的必须在 app.module.ts 中定义工厂???

【问题讨论】:

  • 你的工厂方法会在文件app.component.ts甚至组件中吗?
  • 嗯,我只是不知道你的意思。我想把工厂搬到app.component.ts,所以我的AppModule是空的。
  • 您能用您当前使用的代码更新问题吗? (app.component.ts 中的工厂以及如何在模块中使用它)

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


【解决方案1】:

在哪里定义工厂或任何其他函数都无关紧要。只要确保正确导入它,在app.module.ts顶部的某处

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

【讨论】:

  • 没错,我没有考虑导入。它只是想知道它是作为导出函数放置在 AppModule 中的。我明天试试。谢谢。
  • 不幸的是它不起作用。我刚刚注意到我不能将该函数用作导出函数,而必须在我的 AppComponent 类中调用,因此我可以访问我的服务。有没有可能?
  • 您可以在工厂函数中注入服务。无需实例化整个组件。这无论如何都会导致问题,因为组件不应该那样使用。如果您向我们展示您的代码,包括您需要的所有服务,我们可以更好地帮助您:)
猜你喜欢
  • 1970-01-01
  • 2019-08-07
  • 2018-02-03
  • 2020-11-01
  • 2019-08-14
  • 1970-01-01
  • 2019-03-26
  • 2019-05-18
  • 1970-01-01
相关资源
最近更新 更多