Пытаюсь вывести массив данных на форму. Однако все входные элементы отображают только последнее значение массива. Я проверяю правильное значение ng-reflect-model, но не элемент ввода. Но если я удалю элемент формы, результат будет отображаться правильно.
Спасибо
Данные, которые необходимо вывести
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {id: 17, museum_id: 2, day: "Sunday", hour: "asdg"}
1: {id: 18, museum_id: 2, day: "Monday", hour: "ge"}
2: {id: 19, museum_id: 2, day: "Tuesday", hour: "g"}
3: {id: 20, museum_id: 2, day: "Wednesday", hour: "geg"}
4: {id: 21, museum_id: 2, day: "Thursday", hour: "eg"}
5: {id: 22, museum_id: 2, day: "Friday", hour: "ads"}
6: {id: 23, museum_id: 2, day: "Saturday", hour: "ga"}
Это моя html-страница
<form class = "container mt-3" (ngSubmit) = "onSubmit()">
<div *ngFor = "let hour of hours">
<div class = "form-group row">
<label for = "inputPassword3" class = "col-sm-2 col-form-label">{{ hour.day }}</label>
<div class = "col-sm-10">
<input type = "text" class = "form-control" [(ngModel)] = "hour.hour" id = "hour" name = "hour">
</div>
</div>
</div>
<input type = "submit" class = "btn btn-success" value = "Submit" />
</form>
ts-файл
ngOnInit(): void {
this.id = this.route.snapshot.params['id'];
this.hourService.getHoursById(this.id).subscribe(data => {
this.hours = data;
console.info(data);
},error => console.info(error));
}
элемент
<input _ngcontent-ecy-c47 = "" type = "text" id = "hour" name = "hour" class = "form-control ng-untouched ng-pristine ng-valid" ng-reflect-name = "hour" ng-reflect-model = "asdg">
отображение страницы результат
Если вы используете ngModel
внутри Form
, то атрибут имени является обязательным, и если вы используете его внутри цикла ngFor
, убедитесь, что он уникален. Пример
<input
type = "text"
class = "form-control"
[(ngModel)] = "hour.hour"
id = "hour"
name = "{{hour.day}}"
/>
Ссылка взята из этого ответа
Спасибо, Вимал, Я нашел другой способ решить эту проблему, создав index.
<form class = "container mt-3" (ngSubmit) = "onSubmit()">
<div *ngFor = "let hour of hours; index as i">
<div class = "form-group row">
<label for = "day" class = "col-sm-2 col-form-label">{{ hour.day }}</label>
<div class = "col-sm-10">
<input type = "text" class = "form-control" [(ngModel)] = "hour.hour" id = "hour" name = "hour{{i}}">
</div>
</div>
</div>
<input type = "submit" class = "btn btn-success" value = "Submit" />
</form>