角材料输入中的ngx-translate不显示初始载荷时的平移,但此后显示

时间:2018-07-24 15:57:40

标签: angular angular6 ngx-translate

我在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>

2 个答案:

答案 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>