私はこのテンプレートでこのコンポーネントを持っています:
@Component({
selector: 'form-component',
template:`
<form #form="ngForm" (ngSubmit)="formComponentSubmit(form)">
<ng-container #tmlContainer></ng-container>
<button type="submit">Component form submit</button>
</form>`
})
export class FormComponent implements OnInit{
@ViewChild('tmlContainer', {read: ViewContainerRef}) tmlContainer;
@Input() templateIn: TemplateRef<any>;
ngOnInit() {
this.tmlContainer.insert(this.templateIn.createEmbeddedView(null));
}
formComponentSubmit(form) {
console.log('Component', form)
}
}
入力フィールドを TemplateRef に追加してフォームに追加する方法を知る必要があります。
//edit 入力フィールドは、メイン アプリ内のフォームではなく、コンポーネント内のフォームにのみ存在する必要があります。
このリンクの例を確認できます: https://plnkr.co/edit/cWWxRUlMfR6ecNbga8Y7?p=preview