2016-11-09 5 views
-1

У меня есть следующий (упрощенный) шаблон:Угловой 2: ngfor с ngmodel получает неверное значение

<div *ngFor="let input of inputs; let in=index"> 
       value: {{inputs[in].event.value}} 
         <div [ngSwitch]="input.event.type"> 
          <input *ngSwitchCase="'java.lang.String'" type="text" [(ngModel)]="inputs[in].event.value"> 
     </div> 

Я также попытался: [(ngModel)]="input.event.value".

Значение, установленное на входе является последней переменной итератора на всех входах, оказываемых, хотя значение правильно, что-то вроде:

value: first value 
<select value="first value"></select> 
value: second value 
<select value="first value"></select> 
value: third value 
<select value="first value"></select> 

Если я связываю с входным элементом со значением: value="{{ input.event.value }}", то значение будет правильным.

+0

У меня была аналогичная проблема [в моем случае] (http://stackoverflow.com/questions/41265761/using-ngfor-with-ngmodel-dynamic-data-wrong-behaviour) И данный ответ решил эту проблему - добавьте ' [ngModelOptions] = "{standalone: ​​true}" ' –

ответ

0

Не пытайтесь связать так:

value="{{ input.event.value }}" 

Правильный путь в Angular2:

[value]="input.event.value" 

Попробуйте это:

<input *ngSwitchCase="'java.lang.String'" type="text" [value]="input.event.value"> 
+0

Да, я попытался использовать индексы, чтобы увидеть, будет ли он работать корректно, используя' [(ngModel)] = "input.event.value"> 'имеет тот же эффект. – mtyson

+0

Вы пробовали

+0

Мне нужно двустороннее связывание ... Я не знаю, t думаю [значение] делает это? – mtyson

2

Я не устанавливая name поле на входной элемент правильно, и это, по-видимому, вызывает это.

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