2017-01-12 6 views
2

В моем приложении Angular 2 я использую строчную интерполяцию для извлечения данных из mongoDB. Сейчас сервер/база данных в устоялась, поэтому в некоторых случаях, что нарушу на стороне клиента дисплей, потому что, например, если я втягивая данных с помощью интерполяции строк, например:Использование оператора Elvis внутри строки Интерполированные выражения в Angular 2

{{record.addresses[0].zipCode}} 

... и то в более позднее время, как данные будут упорядочены в базе данных, это сломает мой экран, потому что клиент пытается вытащить из полей, которых больше нет. Поэтому я думаю, что должен использовать что-то вроде оператора Элвиса в таком случае. Таким образом, если данные находятся там, где клиент ищет его, он будет распечатываться на экране. Но, если данные не там, где он их ищет, он просто игнорирует поле вообще - не нарушая ничего на дисплее.

Итак, вкратце, как бы я применил оператор elvis в выражении, как у меня выше?

ответ

2

Вы можете использовать его как это:

{{record?.addresses[0]?.zipCode}} 

Это будет проверять, если record определяется тогда, если addresses[0] определяется по recordobject, а затем, если zipCode определяется по этому объекту

+0

Вы не можете проверить, 'addresses [0]' определяется так, потому что безопасный оператор навигации не может использоваться для элементов массива. –

+0

@StefanSvrkota благодарит вас за предупреждение, я немного поспешил туда. Я проверю его как можно скорее. Тем временем я удалю ответ. – echonax

+0

Собственно, это сработало отлично. Спасибо, эхонакс. В моей первоначальной реализации у меня был единственный знак вопроса в выражении. Добавление дополнительной метки вопроса после того, как первый элемент заработал. Благодаря! – Muirik

 Смежные вопросы

  • Нет связанных вопросов^_^