【发布时间】:2017-09-12 22:05:15
【问题描述】:
我正在使用 Angular2 - 反应式表单。一切正常,直到我想在表单的一个字段中显示预填充的值。
场景:一个页面上有多个按钮,每个按钮打开一个表单,字段为
- 姓名
- 电子邮件
- 留言
- 产品代码 --> 应根据服务中的项目代码预先填充此值。
失败场景:产品代码输入值变为空。
TS 代码:
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
queryForm: FormGroup;
constructor(private _productService: ProductService, fb: FormBuilder) {
this.queryForm = fb.group({
'name': [null, Validators.compose([Validators.required, Validators.minLength(5)])],
'email': [
null, [Validators.required, Validators.email]
],
'message': [null,Validators.compose([Validators.required, Validators.minLength(5)])],
'pcode': [
null
],
})
}
HTML 表单:
<div *ngFor="let item of product">
<form action="#" [formGroup]="queryForm"
(ngSubmit)="submitForm(queryForm.value)" method="post"
novalidate="" class="text-left note" id="f_{{item.productId}}">
[ .... rest of the fields ...]
<div class="form-group hidden">
<input type="hidden " class="form-control " id="pcode " name="pcode"
formControlName="pcode" [value]="item.productCode" />
</div>
<div class="form-group">
<button type="submit" class="btn1" [disabled]="!queryForm.valid">Submit</button>
</div>
</form>
</div>
我怎样才能做到这一点?
【问题讨论】:
-
请注意,您的问题提到您正在使用模板驱动的表单 - 但 FormGroup、FormBuilder 等适用于反应式表单 - 这意味着表单的创建和管理是由您的组件代码驱动的,而不是您的模板 - 那么您打算使用哪种方法:模板还是反应式?
-
上面的问题可能看起来无关紧要,但除非你知道自己在做什么,否则混合这两种方法只会让你感到困惑
-
糟糕.. 反应式表单
标签: angular angular2-template angular2-forms