它看起来像Angular2的FormGroup.patchValue()不会将新元素推入数组 .
例如这样的事情:
ngOnInit() {
this.form = this.formBuilder.group({
animal: [''],
school: this.formBuilder.group({
name: [''],
}),
students: this.formBuilder.array([this.formBuilder.control('Bob')])
});
setTimeout(() => this.form.patchValue({
animal: 'cat'
school : {name: 'Fraser'},
students: ['Bob gets edited', 'This will not show']
}), 250);
}
只有 update "students"中的第一个元素,但它不会 insert 第二个元素 .
我需要做什么才能让它显示两个元素?
4 回答
.patchValue()
只更新现有的FormArray
,它不会修改表单模型的结构 .实际上,您需要将一个新元素推送到数组上才能显示它 .
这都在
FormArray
文档中https://angular.io/docs/ts/latest/api/forms/index/FormArray-class.html好吧,正如silentsod所说,这是不可能的 . 目前,我正在使用以下作为替代方案:
Angular Team - 我们需要一个类似于PatchArray()的新函数,它可以从集合/对象图中进行修补 . 这是一个基本用例 .
好吧,我发现的解决方案是:
我希望这能帮到您 . 我有一个复杂的对象,我的对象里面有一个对象,里面有对象 . 对不起我的语法 . 但我希望我的代码可以帮到你