Angular 6使用ngIf检查变量是否存在

时间:2018-12-07 03:27:11

标签: loops angular6 ngfor ngif

如何在嵌套json对象中使用ngIf检查角度6中是否存在值? 我有这个从API调用返回的Json:

 {

 "orth": ["axxam"],

 "gram":[
      {"pos": ["isem"],
       "feminine": ["taxxamt"],
       "plural":"ixxamen"}
        ]
  }

我设法获得“ orth”和“ pos”的值。我不能得到的是:我想先测试pos == isem,如果且仅当这是真的时,然后我才会显示“女性”和“复数”的值。 这是到目前为止的代码:

 <span> spelling: {{elements?.orth}}</span> 
 <span> POS: {{elements?.gram[0].pos}}</span>

以下内容无效:

  <span *ngIf="elements?.gram[0].pos===isem"> POS: 
 {{elements?.gram[0].feminine}}</span>

此外,我可以遍历对象吗? 我尝试了一下却没有结果:

 <span *ngFor="let element of elements.gram | keyvalue">
  {{element.key}}: {{element.value}}

1 个答案:

答案 0 :(得分:0)

您非常亲密。 :)

在第一个不起作用的<span>中,elements?.gram[0].pos实际上是一个数组,因此应这样引用:elements?.gram[0].pos[0]。另外,要比较字符串,您需要将字符串用引号引起来,在编写时,代码将尝试将elements?.gram[0].pos与名为isem的变量进行比较。将它们放在一起,看起来像这样:

<span *ngIf="elements?.gram[0].pos[0]==='isem'"> 
    POS: {{elements?.gram[0].feminine}}
</span>

对于您的循环,elements?.gram是一个只有一个元素的数组,这是一个对象-该对象包含三个元素。如果要遍历数组内部的对象,请像这样指定*ngFor

<span *ngFor="let element of elements?.gram[0] | keyvalue">
    {{element.key}}: {{element.value}}
</span>

这是Working Stackblitz,显示了此操作。

我希望这会有所帮助。