В моем приложении Angular я пытаюсь показать/скрыть div, используя ngIf
.
Ниже мой HTML:
<div *ngIf = "damageReportToPolice()">
</div>
А вот мой машинописный текст:
public damageReportToPolice(): boolean {
if (this.damageDetailsTwoForm['controls'].injuryTypeGp['controls'].injuryType.value.value === 'Burglary in the car') {
return true;
} else {
return false;
}
}
Это работает нормально, когда страница загружается, и когда условие истинно, отображается div.
Но когда я reset()
заполняю форму, я получаю следующую ошибку:
Cannot read property 'value' of null
Когда у меня было это условие в моем HTML, я мог использовать ?
в качестве безопасного оператора следующим образом:
damageDetailsTwoForm['controls'].injuryTypeGp.controls.injuryType?.value?.value === 'Burglary in the car'
Но я не могу найти альтернативу машинописному тексту.
Может кто-нибудь сказать мне, есть ли безопасный оператор, который я могу использовать? Или как мне обойти эту проблему?
Заранее большое спасибо!
Просто из любопытства, это называется Элвис оператор (Ref. Kotlin), и это также предложение javascript, который может появиться в следующих спецификациях ES. Нет короткого решения для typescript/javascript, если вы не хотите связывать его, как
injuryType && injuryType.value && injuryType.value.value
тогда вы можете просто создать функцию, которая возвращает null
в случае исключения:
export function safeNavigation(cb) {
try {
return cb();
} catch (error) {
return null;
}
};
// In the component...
if (safeNavigation(() => injuryType.value.value) === 'Burglary in the car') {
...
PS. Если это не вызывает конфликтов, мне нравится переименовывать его как _
и использовать как _(() => path.to.navigate)