Вот что я пытаюсь сделать: я хочу, чтобы список выбора привязывался к массиву объектов с помощью ngValue, но первый параметр должен быть опцией "Нет" со значением null
.
Модель:
this.managers = [
{ id: null, name: "(None)" },
{ id: 1, name: "Jeffrey" },
{ id: 2, name: "Walter" },
{ id: 3, name: "Donnie" }
];
this.employee = {
name: "Maude",
managerId: null
};
Вид:
<select [(ngModel)]="employee.managerId">
<option *ngFor="#manager of managers" [ngValue]="manager.id">{{ manager.name }}</option>
</select>
При загрузке список правильно привязывается к элементу "Нет". Но если вы перейдете на другой элемент и обратно, значение модели теперь переключится на строку 0: null
. Это довольно неудобно; это означает, что я должен перехватить значение и изменить его на нуль вручную, прежде чем пытаться сохранить его на сервере.
Здесь Plunker с демо: http://plnkr.co/edit/BH96RWZmvbbO63ZAxgNX?p=preview
Это было довольно легко сделано в Angular 1 с дополнительным <option value="">None</option>
Кажется, что это будет довольно распространенный сценарий, и все же я не смог найти никаких решений. Я также попытался добавить <option [ngModel]="null">None</option>
, но это приводит к тому же значению 0: null
.
Любые предложения?