У меня есть форма, которая выглядит, как это в шаблоне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>
часть в компонент, который будет выглядеть следующим образом
<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>
Но проблема в том, что ngControlGroup
должен быть ребенок либо ngForm
или ngFormModel
, и так же ngControl
на этом входе, что я буду проецировать с template
. Итак, вопрос в том, как я могу сделать эту работу? Поделитесь экземпляром form
с моим form-contents-item
, вероятно, будет работать только для группы, а не для самого входа? Так что-то еще?
Я не совсем, видя, как это что поможет:/Я могу сделать компонент совместимым с 'ngModel' в порядке, но это работает только для' ngControl', а не 'ngControlGroup', правильно? Итак, какая часть этого будет решена? – foxx
Какова цель использования компонента в качестве контрольной группы? Я не думаю, что это поддерживается. –
Мне не нужен компонент как ControlGroup, я просто не хочу делать этот бит с 'ngControlGroup =" содержимым "и" ngControlGroup = "title" и 'ngFor' DRY, поскольку единственное, что изменилось бы это «название». Поэтому я подумал, что сделаю компонент, передам ему часть «title» и сделаю это. Но это не сработает, потому что 'ngControlGroup' должен быть дочерним элементом' ngForm'. – foxx