Зачем использовать "?" оператор в шаблоне привязки?
Когда я использую ?
, привязка работает хорошо. Если я удаляю его, он ничего не показывает в представлении.
<span class="subhead">{{project?.category}}</span>
Подскажите, пожалуйста, разницу? Это хорошая практика, чтобы использовать это таким образом?
Ответы
Ответ 1
Когда Angular отображает представление перед тем, как project
получает назначенное значение, оно вызывает исключение. ?.
перестает оценивать, когда project
равно null
или undefined
, что обычно происходит, когда данные извлекаются async, например, с сервера, который может занять некоторое время.
В следующий раз, когда обнаружение изменения распознает изменение, привязки будут переоценены. Когда project
затем имеет значение, оно привяжет project.category
.
Ответ 2
?
- безопасный оператор навигации. Он проверяет, есть ли переменная null
или undefined
, чтобы наш шаблон не пытался выбрать свойство чего-то ложного.
Дополнительная информация: https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths