我在Angular 6应用中使用ngx-translate v10.02,并且使用的材料6.4
我有一个非常烦人的问题,在初始加载时显示的值没有翻译,但是如果我来回更改语言,它将显示为翻译
我的代码是这样的:
<mat-form-field>
<input matInput placeholder="{{'IDType'| translate}}" disabled name="idType"
[(ngModel)]="this.dataService.idType"
value="{{this.dataService.idType | translate}}">
</mat-form-field>
因此,在初始加载时,它将显示变量本身而不进行翻译(即this.dataService.idType
的值),但是如果我更改语言,它将进行翻译,我想知道是什么原因造成的。
有人可以建议我在这里错过的事情吗?
更新:
除上面显示的一个元素外,其他所有已翻译元素在初始加载时都能正确显示,我看到的区别是这是唯一具有要翻译的变量的元素,所有其他元素都是静态字段
该字段是一个在两个值之间更改的变量,因此我不能用静态值替换它,但是由于它是在更改语言后进行翻译的,所以我觉得它是可行的,但是缺少一点使它起作用。 / p>
答案 0 :(得分:1)
确定要加载初始语言吗?在app.component或您自举的任何东西中。 this.translateService.use('en')或您想要的任何默认语言。
例如:
export class AppComponent {
param = {value: 'world'};
constructor(translate: TranslateService) {
// this language will be used as a fallback when a translation isn't found in the current language
translate.setDefaultLang('en');
// the lang to use, if the lang isn't available, it will use the current loader to get them
translate.use('en');
}
答案 1 :(得分:1)
我终于找到了问题,希望这对其他人有帮助
最初在输入字段中加载的值是
[(ngModel)]="this.dataService.idType"
然后,当我更改语言时,它被转换后的值覆盖,因此我的解决方案是删除ngModel并仅依赖具有转换的value字段并在初始加载时正确加载它,因此代码将像这样:
<mat-form-field>
<input matInput placeholder="{{'IDType'| translate}}" disabled name="idType"
value="{{this.dataService.idType | translate}}">
</mat-form-field>