我们在应用程序中使用 Angular 6。我们最近开始为我们的应用程序准备延迟加载。应用程序有多个延迟加载的路由。
我们希望对所有路由使用单一语言文件(不需要将其分成块。但在引导程序上加载所有翻译)。
我尝试的第一件事就是在 AppModule (forRoot) 中导入和配置 ngx-translate,而不是在其他地方。为此,我使用以下代码为 TranslateModule 创建了一个配置文件:
import {
MissingTranslationHandler, MissingTranslationHandlerParams, TranslateLoader,
TranslateModuleConfig
} from '@ngx-translate/core';
import {HttpClient} from '@angular/common/http';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
export class MyMissingTranslationHandler implements MissingTranslationHandler {
handle(params: MissingTranslationHandlerParams): string {
return '';
}
}
export function createTranslateLoader(http: HttpClient): TranslateHttpLoader {
return new TranslateHttpLoader(http, '/l10n/', '.json');
}
export const TRANSLATE_MODULE_CONFIG: TranslateModuleConfig = {
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
},
missingTranslationHandler: {provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler},
};
这仅适用于急切加载的路线。对于延迟加载,所有文本都是空的。
然后我尝试使用forChild()
延迟加载模块中的方法具有与 TranslateModule 相同的配置(如此处所写 -ngx-翻译 https://github.com/ngx-translate/core)。相同的结果。
我还尝试简单地将 TranslateModule 导入到延迟加载模块中,而不为其提供任何配置。
这两种方法都行不通。延迟加载路由中的所有文本字段均为空。
有人遇到过类似的问题吗?我在网上搜索但找不到任何具体的解决方案。如何正确地将同一文件的翻译应用到延迟加载的模块?