Почему * ngIf оценивается как true при проверке по наблюдаемой, которая не определена и \ или пустой объект {}? - PullRequest
0 голосов
/ 18 февраля 2019

Почему это не оценивается как ложное, когда объект ошибки $ не определен или пустой объект представлен как {}?Скорее, он принимает значение true и отображает сообщение «Что-то пошло не так».

`<div *ngIf="(error$ | async) != null">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

Таким образом, требуется наличие логического свойства для объекта ошибки

`<div *ngIf="(error$ | async)?.error">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

Я знаю, что объектпусто {}, потому что я подписываюсь на него в компоненте и console.log.Я пробовал следующие способы, ни один из которых не работает

`<div *ngIf="(error$ | async) !== (of({}) | async)">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

`<div *ngIf="(error$ | async) != (of({}) | async)">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

`<div *ngIf="(error$ | async) != '{}'">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

`<div *ngIf="(error$ | async) != undefined">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>`

`<div *ngIf="(error$ | async) != {}">
  <span>Something went wrong {{(error$ | async)?.errorResponse}}</span>
</div>
`

Заранее спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Проблема была вызвана использованием оператора распространения в моем хранилище управления состояниями.Я запустил объект ошибки хранилища как нулевой, как и error: null.Затем в своем действии fetchPosts я использовал оператор распространения, как, например, error: {...state.posts.error}, что, в свою очередь, создало новый пустой объект {}.Таким образом, использование *ngIf="error$ | async" всегда оценивается как истинное и по какой-то причине проверка на неравенство пустых объектов, как, например, *ngIf="(error$ | async) != '{}'" или *ngIf="(error$ | async) != (of({}) | async)", кажется, оценивается как истинное или не работает вообще.Вместо оператора распространения я использовал error: null, и теперь error$ | async работает как положено.

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