簡體   English   中英

如何在Ionic 2中為FormArray控件設置初始值?

[英]How to set initial value to a FormArray control in Ionic 2?

我試圖將初始值添加到FormArray控件。 我正在使用此代碼:

    if(this.navParams.get('kids').length > 1) {
        for(let i=0; i<this.navParams.get('kids').length - 1; i++) {
            this.addChild();
        }
        for(let i=0; i<this.navParams.get('kids').length; i++) {
            this.registrationForm.controls['child'][i]['child_first_name'].setValue("asdasdasd");
        }
    }

但是,我認為我以錯誤的方式使用setValue方法。 我遇到此錯誤:

錯誤

這是addChild的代碼:

addChild() {
    // add child to the list
    const control = <FormArray>this.registrationForm.controls['child'];
    control.push(this.initChild());
    // console.log(this.registrationForm.value);
}

這是initChild方法:

initChild() {
    // initialize child form
    return this.formBuilder.group({
        child_first_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])],
        child_last_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])],
        child_gender: ['', Validators.compose([Validators.required])],
        child_bdate: ['', Validators.compose([Validators.required])]
    });
}

我正在尋找將近2天的解決方案。 這是我第一次使用Ionic。 任何幫助,將不勝感激。 謝謝,所以社區!

一種簡單的方法是使用get方法,例如:

this.registrationForm.get(['child', i, 'child_first_name']).setValue('asdasdasd');

如果使用控件屬性,則它應如下所示:

((this.registrationForm.controls['child'] as FormArray).controls[i] as FormGroup).controls['child_first_name'].setValue("asdasdasd");

另一種替代方案可能類似於:

this.registrationForm.patchValue({
  child: [...Array(i), { child_first_name: 'asdasdasd' }]
});

Stackblitz示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM