Данные не загружаются в поле ввода в Angular 8 - PullRequest
0 голосов
/ 09 января 2020

У меня есть поле ввода в файле компонента html в Angular 8

<!-- simplified -->    
<form>
<div *ngFor="let r of reviews">
<input name="Text" value="{{ r.reviewText }}" [(ngModel)]="r.reviewText" />
</div>
</form>

[(ngModel)] обновляет (http помещает) данные обратно в базу данных. Проблема в том, что value="{{ r.reviewText }}" не загружает данные, поскольку они существуют в базе данных, обратно в это поле при загрузке или перезагрузке страницы. Я могу напечатать вещи, но поле ввода всегда пусто при загрузке / перезагрузке. Это тот случай, если синтаксис value="{{ r.reviewText }}" или [value]="r.reviewText".

Если я удаляю [(ngModel)]="r.reviewText" - тогда данные загружаются в значение для этого поля, но тогда очевидно, что привязка с точки зрения обновления обратно в БД не работает. Это как если бы элементы ngModel и value были взаимоисключающими. Я понимаю [(ngModel)] как двойное связывание - но в этом случае это, кажется, только одно связывание - возвращение к БД нормально, но не наоборот. Я пробовал нечто подобное с textarea, но у него та же проблема, что и при вводе - он не отображает r.reviewText, но работает ngModel:

<textarea name="Text" [(ngModel)]="r.reviewText" >{{ r.reviewText }}</textarea>

Примечание: если я положу {{ r.reviewText }} в другом месте на На странице, а не в теге input или textarea, данные из базы данных отображаются в этой позиции при загрузке / перезагрузке, а затем также отражают то, что я печатаю в поле ввода, когда я печатаю, - как и ожидалось.

Как Могу ли я отобразить содержимое БД для {{ r.reviewText }} в параметре значения ввода при загрузке страницы или обновить sh, сохраняя возможность обновлять / сохранять обновленное содержимое в БД с помощью [(ngModel)]? Любой комментарий приветствуется, спасибо.

Ответы [ 2 ]

1 голос
/ 09 января 2020

Вам не нужно, чтобы значение [(ngModel)] использовалось для двухстороннего связывания, и оно должно работать как положено без значения

<input name="Text" [(ngModel)]="r.reviewText" />

Очень маленький пример для stackblitz https://stackblitz.com/edit/angular-keprkp

0 голосов
/ 10 января 2020

Удаление тега html <form> позволило отображать {{ r.reviewText }} в качестве значения для тега ввода или внутри тега textarea при перезагрузке страницы. ngModel работает с двухсторонним связыванием.

Я пока не знаю почему, или будет ли удаление тега формы иметь побочные эффекты в будущем.

Они предлагают указатели - но ничего, как почему полное удаление тега html <form>, похоже, работает. Angular ошибка: если в теге формы используется ngModel, должен быть задан либо атрибут name, либо --and - Angular 2 - ngModel не работает внутри после обновление до rc4

Всем, кто может посоветовать, я включаю formModule в app.module.ts - который всегда был там и остается; это не проблема. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...