ngif条件不适用于多个条件

时间:2019-10-31 09:40:33

标签: angular

我正在使用10页角的导航栏。这不应显示为 三种路线:

  1. 欢迎
  2. 客户端登录
  3. 重置

它只适用于一种情况,而不适用于所有三种情况:

<div
    *ngIf="
      router.url !== '/advocate-home/welcome' ||
      router.url !== '/advocate-home/client-login' ||
      router.url !== '/advocate-home/reset-password'
    "
  >
<nav bar>
</div>

此代码隐藏了该路线的导航栏,但我需要隐藏3条路线:

<div
    *ngIf="
      router.url !== '/advocate-home/welcome'

    "
  >
<nav bar RENDERED>
</div>

2 个答案:

答案 0 :(得分:0)

您应该使用&&,而不是||

<div
    *ngIf="
      router.url !== '/advocate-home/welcome'
      && router.url !== '/advocate-home/client-login'
      && router.url !== '/advocate-home/reset-password'
    "
 >

此逻辑运算符||的意思是OR,但是&&的意思是AND

As mdn says:

  

逻辑与(&&expr1 && expr2。如果expr1可以转换为true,   返回expr2;否则,返回expr1

     

逻辑或(||expr1 || expr2。如果   expr1可以转换为true,返回expr1;否则,返回expr2

let x = 3;
let y = -1;

console.log(x > 0 && y > 0);
// expected output: false

console.log(x > 0 || y > 0);
// expected output: true

console.log(!(x > 0 || y > 0));
// expected output: false

答案 1 :(得分:0)

如果布尔运算符使您感到困惑,则可以考虑使用数组:

*ngIf="!['/advocate-home/welcome', '/advocate-home/client-login', '/advocate-home/reset-password'].includes(router.url)"