Переменные ссылки на шаблон не определены в цикле ngFor

0

Я генерирую динамические поля ввода, используя угловую 6. также проверку, так что я использовал шаблон ссылки. Но это не работает.

Ниже мой код.

<div *ngFor="let item of attributeList;let i = index">
<input type="{{item.type}}" class="form-control" id="usr_{{item.type}}_{{i}}" [(ngModel)]="item.value" name="usr{{i}}" #lastName="ngModel" required />

<div class="error-mesg" [hidden]="lastName.valid || (lastName.pristine && !form.submitted)">
    Field is required
  </div>
</div>
  • 0
    Мы не видим код
  • 0
    Можете ли вы проверить сейчас.
Показать ещё 6 комментариев
Теги:
angular

1 ответ

0

Вы ответили на свой вопрос частично в разделе комментариев.

Единственная действительная проверка выполняется на lastName. Это означает, что lastName не определено в тот момент, когда вы выполняете свой код.

Если вы согласны с неопределенностью, может сработать следующее.

<div *ngFor="let item of attributeList;let i = index">
<input type="{{item.type}}" class="form-control" id="usr_{{item.type}}_{{i}}" [(ngModel)]="item.value" name="usr{{i}}" #lastName="ngModel" required />

<div class="error-mesg" [hidden]="lastName?.valid || (lastName?.pristine && !form.submitted)">
    Field is required
  </div>
</div>

Отмечает вопросительные знаки, которые делают возможной безопасную навигацию, загружая пустое содержимое, если свойство не установлено: https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property дорожки

Редактировать:

Если вы хотите при определенных обстоятельствах скрыть div, содержащий предупреждение, я бы использовал * ngIf, чтобы проверить, является ли оно недействительным. В этом случае вы можете использовать? оператор.

<div *ngIf="lastName?.invalid || lastName?.dirty" class="error-mesg">
    Field is required
  </div>
</div>

Еще лучше было бы сделать такую логику внутри вашего файла .ts. Это облегчает юнит-тестирование кода. И используйте ngIf, который использует эту функцию. Но это мое личное предпочтение.

  • 0
    В этом случае это будет всегда видно. Мне нужно связать проверки во время выполнения.
  • 0
    В этом случае вы должны убедиться, что он установлен, прежде чем читать свойство. Вы сейчас пытаетесь прочитать что-то, что не определено.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню