javascript 模板中括号前的点有什么意义,例如name.errors?.['required']

pkln4tw6  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(107)

Angular's form validation docs具有以下代码示例:

<div *ngIf="name.errors?.['required']">
    Name is required.
  </div>

像我见过的name.errors?['required']这样的语法是有意义的。
像我见过的name.errors?.required这样的语法是有意义的。
把圆点和括号name.errors?.['required']"结合起来,我没见过。它在Chrome中似乎不是有效的Javascript,Uncaught SyntaxError: Unexpected token '['。它是做什么的?

lrpiutwd

lrpiutwd1#

这只是Optional Chaining的另一种语法。
像我见过的name.errors?['required']这样的语法是有意义的。
这实际上是无效的语法!它将被计算为三进制(例如a ? b : c,只缺少空格),并将抛出错误requires all 3 expressions at the end of the expression。正确的语法是点
name.errors?.['required']
https://stackblitz.com/edit/angular-ivy-zjy17n?file=src/app/app.component.html

相关问题