我使用反应式表单进行验证,因此当我想使用FormControl实例中的值提交表单时。我的模板如下所示:
<select class="form-control" name="status" formControlName="status">
<option *ngFor="let status of statuses" [ngValue]="status">
{{status.description}}
</option>
</select>
状态对象如下所示:{ id: 1, description: "desc" }
我想使用FormControl
(this.form.controls.status.value
)的value属性访问整个状态对象,但所选字符串存储在值而不是对象中。
订阅valueChanges事件时,我可以访问该对象。这似乎有点不合逻辑。我认为当我订阅值更改时以及当我通过FormControl
的属性访问最新值时,我应该获得相同的值。通过订阅值更改事件将最新对象存储在我的组件中是没有意义的,因为这会强制我复制该值。我认为这是表单控件的目的。也许我做错了什么!我怎样才能使它发挥作用?
答案 0 :(得分:1)
我的表单在dev中工作正常,但是在prod中它失败了。如果使用Ahead of time compilation(AOT),则form.controls.controlName将失败。你必须使用form.get('controlName')。
不要使用control.errors?.someError,使用control.hasError('someError')
有关详细信息,请参阅此链接:
https://github.com/qdouble/angular-webpack2-starter#aot--donts
您可以使用以下内容在html中查看表单的值:
form value:
{{myForm.value | json}}