Angular ng-reflect-model показывает правильное значение, но не отражается во входном элементе

Пытаюсь вывести массив данных на форму. Однако все входные элементы отображают только последнее значение массива. Я проверяю правильное значение 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">

отображение страницы результат

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
3 868
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы используете 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>

Другие вопросы по теме