우리는 항목을 테이블에 추가하거나 개별적으로 편집 할 수있는 일반 테이블 구성 요소를 작성하려고합니다. 양식에 항목을 추가하기 전에 항목을 편집하기 위해 표에 addForm
FormGroup
이 있습니다. 아이템이 addForm
에서 추가되면 lodash의 cloneDeep()
인 FormArray
으로 복사됩니다.FormGroup을 재귀 적으로 복사하는 방법은 무엇입니까?
지금 진행중인 문제는 행 수정입니다. 테이블의 각 행은 전체 구성 요소에있는 editForm
에 바인딩 된 양식을가집니다. 아이디어는 FormArray
의 값을 editForm
으로 복사 한 다음 양식을 사용자가 볼 수있게 만드는 것입니다. 불행히도 우리는 더 복잡한 형태의 문제를 겪고 있습니다. 여기서 우리는 서로 내부에 테이블 구성 요소를 중첩하려고합니다. 내가 좋아하는) _.cloneDeep와 editForm
(에 FormArray
에서 복사하는 경우
이 _.cloneDeep()
를 사용하여 ... 나는 몇 가지 다른 방법을 시도했지만 그들은 각각 자신 잡았다가 우리는 FormArray
에 복사를 사용하여 formControlName
바인딩이 엉망이 된 것처럼 보입니다. 나는 이것을 FormGroup
으로 바꾸는 것이 FormGroup
에 대한 몇 가지 내부 각도 참조를 엉망으로 만들었 기 때문에 이것을 추측하고 있습니까? 이에서 내 다른 시도가 사용하는 것이었다
patchValue()를 사용
this.editForm = _.cloneDeep(this.formArray.controls[index]) as FormGroup;
Error: There is no FormControl instance attached to form control element with name: 'myControlName'
patchValue()
내장하지만 아무튼 patchValue()
처럼 보이는 ':이 오류가 바람 FormArray
을 아주 잘 처리하십시오.
this.editForm.patchValue((this.formArray.controls[index] as FormGroup).getRawValue());
> this.formArray.controls[0].controls['treatingPhysicians'].controls[0].controls
- Object
- address: FormGroup
- id: FormControl
- physicianFullName: FormControl
- __proto__: Object
> this.editForm.controls['treatingPhysicians'].controls[0].controls
- []
사용자 정의 복사 기능을 쓰기
우리는 또한 불행하게도 또한 어려운이기 때문에, FormArray
들에 질식 할 것 같다, 우리 자신의 사용자 지정 양식 복사 기능은 주위에 누워있다 배열에있는 객체의 속성이 컨트롤인지 아니면 다른 중첩 된 FormGroup
인지 알려줍니다.
this.editForm = this.buildOutValues((this.formArray.controls[index] as FormGroup).getRawValue(), this.editForm);
> this.formArray.controls[0].controls['treatingPhysicians'].controls[0].controls
- Object
- address: FormGroup
- id: FormControl
- physicianFullName: FormControl
- __proto__: Object
> this.editForm.controls['treatingPhysicians'].controls[0].controls
- Object
- address: FormControl
- id: FormControl
- physicianFullName: FormControl
- __proto__: Object
그래서 양식을 복사하여 재치있는 모든 각도 참조를 유지하는 좋은 방법은 무엇입니까? 또는 사용자 지정 양식 복사 방법을 수정할 수있는 방법이 있으며 그룹이어야하며 컨트롤이어야하는 속성을 구별 할 수 있습니까?
양식 복사 기능을 공유 할 수 있습니까? 나는 똑같은 문제에 직면하고 있으며 아마도 사용자 정의 복사 구현의 동일한 기술을 따를 것입니다. –