2017-10-06 1 views
0

FormArray 컨트롤에 초기 값을 추가하려고합니다. 이 코드를 사용하고 있습니다 :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 메서드를 사용하고 있다고 생각합니다. 같은

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])] 
    }); 
} 

난에 대한 해결책을 찾는 오전 :

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

가 initChild 방법입니다 :

여기 Error

가하는 AddChild 코드입니다 : 나는이 오류를 데 거의 2 일. Ionic을 처음 사용합니다. 어떤 도움을 주시면 감사하겠습니다. 고마워, SO 커뮤니티!

처럼 get 방법을 사용하고 그 일의
+0

addChild 메소드의 코드를 추가 할 수 있습니까? – yurzui

+0

질문을 편집하고 addChild 및 initChild 메소드를 추가했습니다. 감사! –

답변

1

간단한 방법 : 당신이 컨트롤 속성을 사용하는 경우 다음과 같이 보일 것입니다

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 Example

+0

와아! 너무 많은 @yurzui :) 당신은 내 전체 주를 저장해 주셔서 감사합니다! 하하! :디 –

관련 문제