拥有非常先进的形式,我应该在角度2+处理。主要问题是我应该将值从一个FormArray字段复制到另一个具有完全不同结构的FormArray
假设第一个FormArray是别名,第二个是Accounts
添加别名时,应自动创建一个新帐户,帐户名称与别名相同。参考帐户名称字段将是只读的,删除帐户按钮也将被禁用,因此无法从引用的项目更改帐户名称
//Aliases:
[{name: 'Alias 1', address: 'Alias address 1'}]
//Accounts:
[{name: 'Alias 1', share: 0}]
编辑别名时,也应在参考帐户项目中进行编辑。
//Aliases:
[{name: 'Alias 11', address: 'Alias address 1'}]
//Accounts:
[{name: 'Alias 11', share: 0}]
帐户项可以自己创建(不作为别名项引用)
//Aliases:
[{name: 'Alias 11', address: 'Alias address 1'}]
//Accounts:
[{name: 'Before', share: 0}, {name: 'Alias 11', share: 0}, {name: 'After', share: 0}]
删除别名时
//Aliases:
[]
//Accounts:
[{name: 'Before', share: 0}, {name: 'After', share: 0}]
别名和会计模块都将导出到其专用组件
模板驱动方法不是一个选项,因为表单值更改事件是在创建表单后立即触发的,无论挂钩的是什么生命周期挂钩。
这里的代码示例...... https://plnkr.co/edit/PhEKXX?p=preview
以下示例代码我将FormGroup值存储为每个帐户组的引用,如此
onAddAlias() {
let group = this.fb.group({
name: this.fb.control(''),
address: this.fb.control('')
});
(<FormArray> this.form.get('aliases')).push(group);
(<FormArray> this.form.get('accounts')).push(
this.fb.group({
name: this.fb.control(group.get('name').value),
share: this.fb.control(0),
refGroup: this.fb.control(group.value)
})
);
}
但值不是对实际别名值的引用。它们只是以当前状态传递。
欢迎任何有关如何实现这种行为的想法。