模板中的语法 #foo="myFoo" 是什么意思?

use*_*110 5 angular

我理解主题标签语法的含义<input #myinput >,提供访问元素的名称,但我不理解以下语法(来自 Angular Material 网站中的示例):

 <mat-menu #menu="matMenu">
Run Code Online (Sandbox Code Playgroud)

等号后面的表达式是什么意思?这是某种别名吗?如果是这样为什么不直接写<mat-menu #matMenu>呢?

StP*_*lis 3

使用#您可以创建引用,以便可以从组件中的其他位置进行调用。正如文档所说:

模板引用变量通常是对模板内 DOM 元素的引用。它还可以引用指令(包含组件)、元素、TemplateRef 或 Web 组件

Angular 根据声明变量的位置为每个模板引用变量分配一个值:

  • 如果在组件上声明变量,则该变量引用组件实例。
  • 如果您在标准 HTML 标记上声明变量,则该变量引用该元素。
  • 如果在元素上声明变量,则该变量引用 TemplateRef 实例,该实例代表模板。
  • 如果变量在右侧指定名称,例如#var="ngModel",则该变量引用具有匹配名称的元素上的指令或组件exportAs

您可以在此处阅读更多信息:模板引用变量 | 角.io