您的主模块需要导入TranslateModule.forRoot(transLoader) 或者您可以像下面这样制作单独的模块并将其导入您的主模块:
import { NgModule } from '@angular/core';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { AngularFirestore } from '@angular/fire/firestore';
import { FirestoreTranslateLoader } from "./firestore-translate-loader";
export function AngularFireFactory(db: AngularFirestore) {
return new FirestoreTranslateLoader(db);
}
const transLoader = {
loader: {
provide: TranslateLoader,
useFactory: AngularFireFactory,
deps: [AngularFirestore]
}
}
@NgModule({
declarations: [],
imports: [
TranslateModule.forRoot(transLoader),
],
})
export class TranslModule { }
所有子模块都需要导入:TranslateModule,不调用.forRoot()。或者像下面这样贴到SharedModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
declarations: [],
imports: [
CommonModule,
TranslateModule,
],
exports: [
CommonModule,
TranslateModule,
]
})
export class SharedModule { }
如果你需要从 firebase 下载翻译,关于我的工厂加载器:
import { TranslateLoader } from '@ngx-translate/core';
import { Observable } from "rxjs";
import { AngularFirestore } from "@angular/fire/firestore";
export class FirestoreTranslateLoader implements TranslateLoader {
constructor(private db: AngularFirestore) { }
getTranslation(lang: string, prefix: string = 'langs'): Observable<any> {
return this.db.doc(prefix + '/' + lang).valueChanges() as Observable<any>;
}
}