Зачем использовать "?" оператор в шаблоне привязки?

Когда я использую ?, привязка работает хорошо. Если я удаляю его, он ничего не показывает в представлении.

<span class="subhead">{{project?.category}}</span>

Подскажите, пожалуйста, разницу? Это хорошая практика, чтобы использовать это таким образом?

Ответ 1

Когда Angular отображает представление перед тем, как project получает назначенное значение, оно вызывает исключение. ?. перестает оценивать, когда project равно null или undefined, что обычно происходит, когда данные извлекаются async, например, с сервера, который может занять некоторое время.

В следующий раз, когда обнаружение изменения распознает изменение, привязки будут переоценены. Когда project затем имеет значение, оно привяжет project.category.