我花了好几个小时才让它正常工作。最终,我不得不在app.module.ts
的导入部分中添加HttpClientModule
(在你的情况下可能是home.module.ts
)。希望这有所帮助。
第一步:导入HttpClientModule
第二步:使用HttpClient
代替Http
。
因此,代码如下:app.module.ts
(在你的情况下是home.module.ts
)
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClientModule, HttpClient } from '@angular/common/http';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
declarations: [
HomePage,
],
imports: [
IonicPageModule.forChild(HomePage),
HttpClientModule
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
})
],
exports: [
HomePage
]
})
export class HomePageModule {}
在
app.component.ts
中的
constructor
中添加这行代码。
import {TranslateService} from '@ngx-translate/core';
...
translate.setDefaultLang('en');
然后您需要在./assets/i18n/
路径下创建两个JSON
文件。
en.JSON
{
"title": "Translation demo",
"text": "This is a simple demonstration app for {{value}}"
}
然后在您的应用程序中使用PIPE
过滤器,就像这样。
<h1>{{'title' | translate}}</h1>
或者
<h1 [translate]="'title'"></h1>
我们还可以传递一个参数
。
<h1>{{'text' | translate:{'value':'ngx-translate'} }}</h1>
或者
<h1 [translate]="'text'" [translateParams]="{value: 'ngx-translate'}"></h1>