2016-11-22 3 views
0

Как использовать ngModel для входов через несколько форм, которые повторяются ngFor?Angular2 не может использовать ngModel в форме, повторяемой ngFor

Angular2 дает мне ошибку, когда я пытаюсь это сделать.

Error: Permission denied to access property "rejection"

Пример блок проблемного кода:

<div *ngFor="let item of items"> 
    <form name="itemForm"> 
     {{item.name}}<input [(ngModel)]="item.name"> 
    </form> 
</div> 

Вот plunker https://plnkr.co/edit/YNZiCBeyqJoxO5ox5nlC?p=preview

Если удалить тэг формы, то все бегут без проблем, но мне нужно, так что я могу используйте клавишу ввода на всех входах для обновления соответствующих данных в их собственной форме.

+0

Я не могу воспроизвести вашу ошибку с Plunker https://plnkr.co/edit/Bx0zT8F0wENJ2NMZqRAy?p=preview. Однако атрибут 'name' отсутствовал. –

+0

Странно теперь, когда плункер не бросает ошибку во второй раз, когда я его открыл. Мой фактический код все еще дал мне ошибку, хотя она уже решена. Благодарю. – Skyvory

+0

К сожалению, это ваш plunkr, который каким-то образом работает, добавляя атрибут имени к тегу ввода. – Skyvory

ответ

2

Если в теге формы используется ngModel, то должен быть установлен либо атрибут name, либо элемент управления формой должен быть определен как «автономный» в ngModelOptions.

Ниже будет работать без каких-либо ошибок:

<div *ngFor="let item of items"> 
    <form name="itemForm"> 
    {{item.name}}<input [(ngModel)]="item.name" [ngModelOptions]="{standalone: true}"> 
    </form> 
</div> 
+2

Добавление атрибута 'name' для формирования поля' input' будет иметь больше смысла, вместо того, чтобы говорить его как 'standalone' –

+0

Я также предпочитаю устанавливать атрибут' name' поля 'input' –

+0

Из документа с угловым выражением (https: //angular.io/guide/forms): «Определение атрибута имени является требованием при использовании [(ngModel)] в сочетании с формой». – elshev

0

Как отметил @ ranakrunal9 вы можете использовать уникальный атрибут имя для входа. Вот код:

<div *ngFor="let item of items; let index=index"> 
    <form name="itemForm"> 
     {{item.name}}<input [(ngModel)]="item.name" name={{index}}> 
    </form> 
</div> 

 Смежные вопросы

  • Нет связанных вопросов^_^