选择FormControl上的setValue与ngx-translate - Angular 2

时间:2017-11-17 16:19:09

标签: angular typescript ngx-translate

我在一个反应​​形式中有一个选择FormControl,我正在使用来自ngx-translate库的管道翻译。在我创建FormGroup时初始化FormControl时,值在DOM中反映得很好,您实际上可以看到转换。但是,当我尝试在FormControl上重置,setValue或patchValue时,管道转换似乎根本不喜欢它。我可以在重置它之后调试Form.log的值,并实际看到值更改。它只是没有反映DOM中的这种变化。我还尝试在FormControl中添加一个(ngModelChange)来重置它后观察值的变化,这也可以,但不会在DOM中反映出来。我想要的结果是使用reset,因为我可以设置控件的值并在一次通过中重置控件的状态。这是我见过的最奇怪的行为,我无法弄清楚这一点。如果我删除管道转换,则值的重置完全正常并反映DOM中的值。任何帮助,将不胜感激!以下是代码:

this.shopInfoForm = this._formBuilder.group({
  name: [this._settings.name],
  brand: [this._settings.brands[0]],
  language: [this._settings.language]
});

get language() { return this.shopInfoForm.get('language'); }

this.language.reset(this._settings.language);

<div class="input-group">
  <span class="input-group-addon">Language</span>
  <select formControlName="language" class="form-control">
    <option *ngFor="let language of languages">{{language.langLabelId.toString() | translate}}</option>
  </select>
</div>

1 个答案:

答案 0 :(得分:0)

万一有人遇到同样的问题。这一切都与选项标签上的value属性有关。我在DOM中更新了我的代码,如下所示:

<option *ngFor="let language of languages" value="{{language.langLabelId}}">{{language.langLabelId.toString() | translate}}</option>

现在效果很好。