是否可以从Angular2中的FormControl值访问所选对象?

时间:2017-02-06 12:12:22

标签: angular

我使用反应式表单进行验证,因此当我想使用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" }

我想使用FormControlthis.form.controls.status.value)的value属性访问整个状态对象,但所选字符串存储在值而不是对象中。

订阅valueChanges事件时,我可以访问该对象。这似乎有点不合逻辑。我认为当我订阅值更改时以及当我通过FormControl的属性访问最新值时,我应该获得相同的值。通过订阅值更改事件将最新对象存储在我的组件中是没有意义的,因为这会强制我复制该值。我认为这是表单控件的目的。也许我做错了什么!我怎样才能使它发挥作用?

1 个答案:

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