为什么需要后缀“?”以角度形式验证属性

时间:2018-08-13 09:32:05

标签: angular angular-directive

<div *ngIf="heroForm.errors?.identityRevealed && (heroForm.touched || heroForm.dirty)" class="cross-validation-error-message alert alert-danger">
Name cannot match alter ego.</div>

在上面为什么需要后缀?陷入错误

1 个答案:

答案 0 :(得分:6)

如果heroForm有效,heroForm.errors将为空,对heroForm.errors.identityRevealed的访问将引发类型错误,如TypeError: Cannot read property 'identityRevealed' of null,因此?.运算符将处理不访问如果identityRevealed属性为null,则返回errors

没有?.运算符

 *ngIf="(heroForm.errors && heroForm.errors.identityRevealed) && ..." 

或更简单,例如@JB Nizet提及

 *ngIf="heroForm.hasError('identityRevealed') && ..."

safe-navigation-operator