【发布时间】:2019-02-26 07:45:04
【问题描述】:
我正在以这种方式初始化我的表单,但是当我需要编辑它时,它不接受值
组件.ts
ngOnInit() {
this.tinvoiceService.initForm();
}
tinvoice.service.ts
form: FormGroup;
constructor(
private _fb: FormBuilder,
private invoiceService: InvoiceService
) {}
initForm(): void {
this.form = this._fb.group({
customer: [null, Validators.required],
totalPrice: 0,
purchases: this._fb.array([])
});
// initialize stream
const myFormValueChanges$ = this.form.controls['purchases'].valueChanges;
myFormValueChanges$.subscribe(purchases => this.updatePurchasesAmount(purchases));
}
我通过 HTML 传递值
tinvoice.component.html
<a
class="btn btn-outline-info text-info"
(click)="tinvoiceService.populateForm(invoice)">
Edit
</a>
tinvoice-list.component.ts
populateForm(invoice) {
this.form.setValue(invoice);
}
通过控制台我得到了这个结果
有什么想法吗?
【问题讨论】:
-
你在哪里打电话
initForm()? -
另一个组件 ngOnInit() {this.tinvoiceService.initForm();}
-
您确定在第一次调用 form.setValue() 之前调用了 initForm() 吗?你能用 console.log() 确认吗?
-
我认为您的
tinvoiceService存在严重问题。你为什么要在那里初始化表单?它不应该在你的组件中吗?
标签: angular angular-reactive-forms angular2-formbuilder formarray angular-formbuilder