首页 文章

使用ngx-translate选择FormControl上的setValue - Angular 2

提问于
浏览
0

我在一个反应形式中有一个选择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

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

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

    它现在工作得很好 .

相关问题