나는 템플릿angular2`ngControlGroup` 자식 요소 내부
<form [ngFormModel]="form">
<div ngControlGroup="contents">
<div ngControlGroup="title">
<div *ngFor="let lang of languages$ | async" [ngControlGroup]="lang">
<md-input ngControl="content"></md-input>
</div>
</div>
</div>
</form>
이 모양과 모양이
this.form = this.builder.group({
contents: this.builder.group({
title: this.builder.group({
en: this.builder.group({
id: this.builder.control(null),
content: this.builder.control('some english content')
}),
cs: this.builder.group({
id: this.builder.control(null),
content: this.builder.control('some czech content')
})
})
})
});
모양과 나는
을 넣어 싶습니다 양식을 가지고<div ngControlGroup="contents">
<div ngControlGroup="title">
<div *ngFor="let lang of languages | async" [ngControlGroup]="lang"><!-- --></div>
</div>
</div>
부품에 들어가는 부분은 다음과 같습니다.
필요ngForm
또는
ngFormModel
하나의 자식, 그래서 내가
template
에 투사됩니다 해당 입력에
ngControl
을 수행하는 것을
<form-contents-item type="title" [languages]="languages$ | async">
<md-input ngControl="content"></md-input>
</form-contents-item>
이
<div ngControlGroup="contents">
<!-- `title` from @Input -->
<div [ngControlGroup]="title">
<!-- `languages` from @Input -->
<div *ngFor="let lang of languages" [ngControlGroup]="lang">
<!-- content projection here, probably using `ngTemplateOutlet`, since you can't iterate over ng-content -->
</div>
</div>
</div>
등의 템플릿 그러나 문제는있다. 그래서 질문은, 어떻게이 일을 할 수 있을까요? form
인스턴스를 내 form-contents-item
에 공유하면 입력 자체가 아닌 그룹에서만 사용할 수 있습니다. 다른 뭔가?
에 주입 된
controlGroup
를 할당 된 속성 이름이 될 것입니다 방법/ngModel'과 호환되는 구성 요소를 만들 수는 있지만 ngControlGroup이 아니라'ngControl'에서만 작동합니다. 맞습니까? 그러면 어떤 부분이 해결 될까요? – foxx구성 요소를 컨트롤 그룹으로 사용하는 목적은 무엇입니까? 나는 그것이 지원된다고 생각하지 않는다. –
ControlGroup으로 구성 요소가 필요하지 않습니다. 단지 'ngControlGroup = "contents"'및'ngControlGroup = "title"'및'ngFor' DRY로 비트를 만들고 싶지 않습니다. "제목"입니다. 그래서 구성 요소를 만들고 "제목"부분을 전달하고 완료 할 것이라고 생각했습니다. 하지만'ngControlGroup'은'ngForm'의 자식이어야하므로 작동하지 않을 것입니다. – foxx