Угловой 6 проверка на наличие переменной с ngIf - PullRequest
0 голосов
/ 07 декабря 2018

Как я могу проверить наличие значения в angular 6 с помощью ngIf во вложенном объекте json?Я получил этот Json, возвращенный из вызова API:

 {

 "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 голосов
/ 07 декабря 2018

Вы были очень близки.:)

В первом <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 , показывающий это в действии.

Надеюсь, это поможет.

...