각 구성 요소는 각각 개별 필드를 나타내는 하위 구성 요소를 생성하는 양식/페이지에 해당합니다. 상위 구성 요소의 FormGroup이 하위 구성 요소에 포함 된 필드 내가 그렇게 할 경우에만 오류가 발생합니다 :angular2 - 부모 FormGroup의 하위 구성 요소에서 FormControlName의 유효성을 검사합니다.
여기A FormControlName must have a corresponding FormGroup.
내 부모 구성 요소에 대한 템플릿 코드입니다 :
<div class="form-group" [formGroup]="parentGroup">
<table>
<tbody>
<tr *ngFor="let i of array">
<child [property]="i" [options]="myForm.controls[i.id]"></child>
</tr>
</tbody>
</table>
</div>
양식은 여기에서 구성 요소 파일에 정의되어 있습니다. 아무것도
<td class="prompt">
{{i.label}}
</td>
<td class="required" width="1%">
<span *ngIf="property.required">*</span>
</td>
<td>
<input type="text " class="form-control" [ngClass]="{error: !options.valid}" formControlName="property.id">
</td>
<td>
가 정의 된 없지만 :
private formAttrs: FormGroup;
constructor(private _fb: FormBuilder) { }
ngOnInit() {
this.myForm = this._fb.group({});
for (var i = 0; i < this.array.length; i++) {
this.formAttrs.addControl(this.array[i].id, new FormControl(this.array[i].value, Validators.required));
}
}
하위 구성 요소에 대한 템플릿 코드는 이것이다 : 나는 얼마나 많은 아이 컴퍼넌트 우리가 추가하는에 따라 FormControls을 추가 해요 하위 구성 요소 클래스 ("속성"과 "옵션"에 전달 된 FormControl 요소 제외)에서 부모 구성 요소의 formGroup은 하위 구성 요소의 formControlName과 일치 할 수 있지만 대신 오류 :
EXCEPTION: Error in ./ChildComponent class ChildComponent - inline
template:7:109 caused by: formControlName must be used with a parent
formGroup directive. You'll want to add a formGroup directive and pass
it an existing FormGroup instance (you can create one in your class).
이 오류를 해결할 수있는 방법이 있습니까? 그렇지 않다면 누군가가 제안 할 수있는이 문제에 대한 또 다른 해결책이 있습니까?
미리 감사드립니다.
답장을 보내 주셔서 감사합니다. 각 하위 구성 요소에는 고유 한 "id"변수가있는 "속성"멤버가 있으므로 formControlNames는 실제로 다릅니다. 아직도 할 수 있니? – user2850751