ngModel не может использоваться для регистрации средств управления формой в родителе formGroup директива

После обновления до RC5 мы начали получать эту ошибку:

ngModel cannot be used to register form controls with a parent formGroup directive.  Try using
  formGroup's partner directive "formControlName" instead.  Example:


<div [formGroup]="myGroup">
  <input formControlName="firstName">
</div>

In your class:

this.myGroup = new FormGroup({
   firstName: new FormControl()
});

  Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:

  Example:


<div [formGroup]="myGroup">
   <input formControlName="firstName">
   <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">
</div>

Это похоже в RC5, эти два больше не могут использоваться вместе, но я не мог найти альтернативное решение.

Вот компонент, производящий исключение:

<select class="field form-control" [formGroup]="form" [(ngModel)]="cause.id" [name]="name">
<option *ngFor="let c of causes" [value]="c.text">{{c.text}}</option>
</select>
61
задан 24 August 2016 в 17:50

2 ответа

Я просто получил эту ошибку, потому что я не включил все свои средства управления формой в div с formGroup атрибут.

, Например, это бросит ошибку

<div [formGroup]='formGroup'>
</div>
<input formControlName='userName' />

, Это может быть довольно легко пропустить, если это - особенно подробная форма.

1
ответ дан 31 October 2019 в 15:05

Если Вы хотите использовать [formGroup] с formControlName, необходимо заменить name атрибут formControlNameformControlName.

Пример:

Это не работает, потому что это использует [formGroup] и name атрибут.

<div [formGroup]="myGroup">
   <input name="firstName" [(ngModel)]="firstName">
</div>

необходимо заменить эти name атрибут formControlName, и он будет хорошо работать как это следующее:

<div [formGroup]="myGroup">
   <input formControlName="firstName" [(ngModel)]="firstName">
</div>
0
ответ дан 31 October 2019 в 15:05

Другие вопросы по тегам:

Похожие вопросы: