Angular中*ngIf已判定user存在,能否移除user?.name的可选链?
Angular中*ngIf同一标签内可选链的冗余问题解答
完全可以安全移除同一标签内user?.name里的可选链检查,直接写成user.name就没问题。
原因很简单:Angular的*ngIf作为结构型指令,执行优先级高于标签上的属性插值绑定。只有当*ngIf="user"的条件判定为真时,这个<div>元素才会被创建并渲染到DOM中——此时user肯定是非null、非undefined的状态,所以同一标签内的所有属性绑定都能安全访问user的属性,没必要再加可选链做冗余检查。
修改后的代码可以简化成这样:
<div *ngIf="user" title="{{user.name}}"> <span>Age: {{user.age}}</span> </div>
顺带提一句:子标签里的user?.age也可以直接改成user.age,因为*ngIf已经确保了整个子组件树渲染时user的存在性,所有嵌套内容里的空值检查都是多余的。
内容的提问来源于stack exchange,提问作者connectedMind
相关产品推荐
相关产品推荐

