ngIf else с угловым Ionic шаблоном

Пытаюсь понять, как работает ngIf / else, может что-то глупое но не понимаю. В основном мне нужно распечатать какой-то контент, если мой массив заполнен (и это отлично работает), и какой-то другой контент, если он пуст (что не работает). Это мой массив, который содержит элементы из отфильтрованного массива json.

public gbrumdatafiltered : Array<any> = [];

А это код. Как я уже сказал, когда в gbrumdatafiltered есть данные, он печатает истину, поэтому условие работает, но если массив пуст (как показано на скриншоте), ничего не происходит.

<ion-card *ngFor="let gbrumd of gbrumdatafiltered">
 <div *ngIf="gbrumd?.length; then gbrumdknown; else gbrumdunknown"></div>
  <ng-template #gbrumdknown>true</ng-template>
  <ng-template #gbrumdunknown>false</ng-template>
</ion-card>

Я пробовал даже с такими вариациями, как:

    <div *ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown"></div>
--
    <div *ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown"></div>
--
    <div *ngIf="gbrumdatafiltered.length > 0; then gbrumdknown; else gbrumdunknown"></div>

Но все равно не работает

Это cconsole.log (this.gbrumdatafiltered); команда

введите описание изображения здесь

Итак, массив пуст.


person William Manzato    schedule 09.12.2019    source источник


Ответы (1)


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

<ng-container*ngIf="gbrumdatafiltered?.length; then gbrumdknown; else gbrumdunknown">
</ng-container>
<ng-template #gbrumdknown>
 <ion-card *ngFor="let gbrumd of gbrumdatafiltered">
  <div>true</div>
 </ion-card>
</ng-template>
<ng-template #gbrumdunknown>
 <ion-card *ngIf="submitted">
  <div>false</div>
 </ion-card>
</ng-template>
person bryan60    schedule 09.12.2019
comment
Спасибо, так работает, но всегда выводит ложное условие .. Я просто забываю написать в посте, что у меня есть даже кнопка отправки. Мне нужно напечатать одно содержимое, если входное значение нечетное, а другое, если оно четное, но только тогда, когда пользователь что-то вводит. - person William Manzato; 09.12.2019
comment
этот код выводит ложное условие, если в массиве нет элементов или нет массива. не уверен, что тебе нужно кроме этого - person bryan60; 10.12.2019
comment
Обычно мне нужно печатать только после того, как пользователь отправит значение. Ничего раньше - person William Manzato; 10.12.2019
comment
тогда вам нужна какая-то переменная, указывающая, было ли отправлено значение, и использовать его ... добавил что-то в свой ответ, чтобы показать, как это МОЖЕТ выглядеть - person bryan60; 10.12.2019