Я следил за учебником angular hero по форме, управляемой моделью, и у меня возникла проблема с отображением,
const secretLairsDeepCopy: Address[] = formModel.secretLairs.map(
(address: Address) => Object.assign({}, address)
);
с адресом определить как
Address {
street = '';
city = '';
state = '';
zip = '';
}
теперь, если я решу, например, установить zip как число, а в html сделать его выбором из списка, когда я сохраняю адрес в formModel, я получаю zip как строку, а не число, даже если я определяю zip как число и даю номер в подъезде, он автоматически меняется на строку.
Я не уверен, связано ли это с angular или с es6, поскольку .map определено в lib.es6.d.ts
Спасибо за чтение, хорошего дня!
РЕДАКТИРОВАТЬ:
Я сделал stackblitz в качестве образца, но тест выполняется на State атрибут, а не почтовый индекс, поскольку я использовал основу учебника героя, а состояние уже было выбрано из списка, его было быстрее изменить. Итак, в этом stackblitz я устанавливаю список состояний как список чисел и инициализирую состояние числом.
РЕДАКТИРОВАТЬ:
Похоже, это связано с <option *ngFor="let state of states" [value]="state">{{state}}</option>
Которые должны быть заменены на <option *ngFor="let state of states" [ngValue]="state">{{state}}</option>
cf Angular 2 cast выберите значение для int, как указано в комментарии Пьера Малле