68

I'm confused a bit. I need to hide block if result have one of several cases. But seems it not working correctly...

<div *ngIf="currentStatus !== 'open' || currentStatus !== 'reopen' ">

    <p padding text-center class="text-notification">{{message}}</p>

</div>

It's just appeared with other condition. It doesn't work neither 1 condition nor for 2. Also tried *ngIf="currentStatus !== ('open' || 'reopen') " but it's works ok only for 1 case.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Merge-pony
  • 1,668
  • 3
  • 18
  • 32

2 Answers2

94

Besides the redundant ) this expression will always be true because currentStatus will always match one of these two conditions:

currentStatus !== 'open' || currentStatus !== 'reopen'

perhaps you mean one of

!(currentStatus === 'open' || currentStatus === 'reopen')
(currentStatus !== 'open' && currentStatus !== 'reopen')
Günter Zöchbauer
  • 623,577
  • 216
  • 2,003
  • 1,567
  • 1
    So what is the expected behavior depending on what status? – Günter Zöchbauer May 05 '17 at 09:58
  • 1
    @Merge-pony It seems that you use OR instead of AND, because `!(currentStatus === 'open' || currentStatus === 'reopen')` gives the same result as `currentStatus !== 'open' && currentStatus !== 'reopen'` – mankers May 05 '17 at 10:05
  • @mankers yes, it is!!! But it doesn't work. I'm using Ionic 3 and Angular 4 stack... – Merge-pony May 05 '17 at 10:37
23

You got a ninja ')'.

Try :

<div *ngIf="currentStatus !== 'open' || currentStatus !== 'reopen'">
Toodoo
  • 8,570
  • 6
  • 35
  • 58