Угловой ng Если две переменные одинаковы (строка и число) - PullRequest
0 голосов
/ 04 октября 2019

Итак, у меня есть переменная sight.pin_lang_id, которая загружается на страницу. (Иногда это 1, иногда 2). У меня также есть сервис, который получает lang. В настоящее время у него есть имя и идентификатор. См. Рисунок ниже:

enter image description here

Теперь я хочу отображать lang.name только тогда, когда lang.id соответствует sight.pin_lang_id.

Я попробовал это с ngIf:

<div *ngIf="sight.pin_lang_id == lang.id">
     {{lang.name}}
</div>

Но я просто получаю сообщение об ошибке ERROR TypeError: Cannot read property 'pin_lang_id' of undefined

Но когда я делаю это, он работает нормально:

<div *ngIf="sight?.pin_lang_id == 2">
     show me
</div>

Примечание: sight.pin_lang_id - это тип строки, поэтому в консоли отображается «2». В то время как lang.id является числом 2, показывает только 2.

Как я могу создать ngIf, который проверяет, равна ли строка числу (из переменных)?

Ответы [ 3 ]

0 голосов
/ 05 октября 2019

<div *ngIf="sight?.pin_lang_id == lang.id">
     show me
</div>

Это должно быть просто замечательно, проблема в том, что при чтении sight оно еще может не иметь значения, поэтому ?

0 голосов
/ 05 октября 2019

Хитрость заключалась в том, чтобы поместить ngIf внутрь ngFor:

                        <div *ngFor="let lang of langs" [lang]="lang">
                            <div *ngIf="sight.pin_lang_id == lang.id">
                                {{lang.name}}
                            </div>
                        </div>
0 голосов
/ 04 октября 2019

Я не уверен, что это то, чего вы пытаетесь достичь, но вы можете либо привести число к строке, либо строку к числу

Так что-то вроде

<div *ngIf="sight?.pin_lang_id == '2'">
     show me
</div>

должно работать

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