【问题标题】:Access form property inside a nested formGroup访问嵌套 formGroup 中的表单属性
【发布时间】:2017-03-22 15:37:48
【问题描述】:

如何访问嵌套 formGroup 中的表单属性?这可能听起来令人困惑,但我认为代码将帮助你们理解。 这是formGroup,你可以看到formGroup里面有一个数组:

      this.formDadosBancarios = this._fb.group({
        id: [''],
        dados_titular: this._fb.array([
          this.initTitular()
        ])
      })

   initTitular(){
        return this._fb.group({
            titular: ['', [<any>Validators.required, <any>Validators.minLength(3)]],
            cnpj: [''],
            cpf: ['', Validators.required],
            data_nasc: ['', Validators.required],
            agencia: ['', <any>Validators.required ],
            banco: ['', <any>Validators.required],
            conta: ['', <any>Validators.required],
            tipo:  ['', <any>Validators.required],
            pessoa_juridica: ['']
        })
    }

这是我尝试访问 ìnitTitular` 中的属性 cpf 的 sn-p 代码(我知道下面的代码看起来很无稽之谈,但只是为了说明逻辑):

const cpfCtrl: AbstractControl = this.formDadosBancarios.get('dados_titular').get('cpf');

【问题讨论】:

    标签: javascript forms angular


    【解决方案1】:

    你只需要使用FormArrayat(index: number) : AbstractControl方法

    let array = <FormArray> this.formDadosBancarios.get('dados_titular');
    let cpf = array.at(0).get("cpf");
    

    我认为您也可以这样做(但我不确定 FormArray 的 [0])。见docs

    this.formDadosBancarios.get('dados_titular[0].cpf'); //maybe it's ".0" instead of "[0]"
    this.formDadosBancarios.get(['dados_titular',0,'cpf']);
    

    【讨论】:

    • 谢谢,但我收到此错误:“属性 'at' 不存在于类型 'AbstractControl'”,我是否必须在上面声明一些内容?
    • 这个在这里就像一个魅力this.formDadosBancarios.get(['dados_titular',0,'cpf']);
    • 我更感兴趣的是上一个get('dados_titular[0].cpf')get('dados_titular.0.cpf')...
    • 非常感谢你,它真的帮助了我,0 是数组的位置对吗?我想知道如果我添加更多数组会不会有一些问题
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多