我在一个反应形式中有一个选择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>
答案 0 :(得分:0)
万一有人遇到同样的问题。这一切都与选项标签上的value属性有关。我在DOM中更新了我的代码,如下所示:
<option *ngFor="let language of languages" value="{{language.langLabelId}}">{{language.langLabelId.toString() | translate}}</option>
现在效果很好。