Angular 2 +

时间:2017-08-25 08:02:25

标签: angular

拥有非常先进的形式,我应该在角度2+处理。主要问题是我应该将值从一个FormArray字段复制到另一个具有完全不同结构的FormArray

假设第一个FormArray是别名,第二个是Accounts

  1. 添加别名时,应自动创建一个新帐户,帐户名称与别名相同。参考帐户名称字段将是只读的,删除帐户按钮也将被禁用,因此无法从引用的项目更改帐户名称

    //Aliases:
    [{name: 'Alias 1', address: 'Alias address 1'}]
    
    //Accounts:
    [{name: 'Alias 1', share: 0}]
    
  2. 编辑别名时,也应在参考帐户项目中进行编辑。

    //Aliases:
    [{name: 'Alias 11', address: 'Alias address 1'}]
    
    //Accounts:
    [{name: 'Alias 11', share: 0}]
    
  3. 帐户项可以自己创建(不作为别名项引用)

    //Aliases:
    [{name: 'Alias 11', address: 'Alias address 1'}]
    
    //Accounts:
    [{name: 'Before', share: 0}, {name: 'Alias 11', share: 0}, {name: 'After', share: 0}]
    
  4. 删除别名时

    //Aliases:
    []
    
    //Accounts:
    [{name: 'Before', share: 0}, {name: 'After', share: 0}]
    
  5. 别名和会计模块都将导出到其专用组件

  6. 模板驱动方法不是一个选项,因为表单值更改事件是在创建表单后立即触发的,无论挂钩的是什么生命周期挂钩。

  7. 这里的代码示例...... 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)
            })
        );
    }
    

    但值不是对实际别名值的引用。它们只是以当前状态传递。

    欢迎任何有关如何实现这种行为的想法。

0 个答案:

没有答案