nickola105
@nickola105
начинающий

Как не рендерить список, если он пустой?

Есть такой код:

<mat-form-field class="example-full-width">
        <input type="text" matInput placeholder="serch" [matAutocomplete]="auto" [formControl]="searchStr">
        <mat-autocomplete #auto="matAutocomplete" showPanel="false" isOpen="false">
          <mat-option (onSelectionChange)="selectedFilm(film)" *ngFor="let film of films.results" [value]="film.title">
            <img class="example-option-img" aria-hidden [src]="getUrlImage(film.poster_path)" height="25">
            <span>{{film.title}}</span>
          </mat-option>
        </mat-autocomplete>
      </mat-form-field>

Это autocomplete из material Angular.
Ставлю showPanel="false" isOpen="false", а он все равно бросает ошибку:

Cannot read property 'results' of null

Как быть?
  • Вопрос задан
  • 232 просмотра
Решения вопроса 2
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
showPanel="false" isOpen="false"
ни на что не повлияет, потому что ngFor все равно будет рендериться. Эти параметры определяют только поведение.

так пойдет?
<mat-form-field class="example-full-width">
        <input type="text" matInput placeholder="serch" [matAutocomplete]="auto" [formControl]="searchStr">
        <mat-autocomplete #auto="matAutocomplete" showPanel="false" isOpen="false" *ngIf="films?.results?.length">
          <mat-option (onSelectionChange)="selectedFilm(film)" *ngFor="let film of films.results" [value]="film.title">
            <img class="example-option-img" aria-hidden [src]="getUrlImage(film.poster_path)" height="25">
            <span>{{film.title}}</span>
          </mat-option>
        </mat-autocomplete>
      </mat-form-field>


а вообще хорошо начальное значение инициализировать как-то. Чтобы был пустой массив.
Ответ написан
@msdosx86
Просто объяви в компоненте public films = [];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы