angular - Angular2中圆括号、括号和星号有什么区别?

标签 angular

我一直在阅读 Angular website 中的 Angular 1 到 2 快速引用,我不完全理解的一件事是这些特殊字符之间的区别。例如一个使用星号的:

<tr *ngFor="#movie of movies">
   <td>{{movie.title}}</td>
</tr>

我这里的理解是井号(#)将movie定义为局部模板变量,但是ngFor前的星号是什么意思呢?而且,有必要吗?

接下来是使用括号的例子:

<a [routerLink]="['Movies']">Movies</a>

我有点理解 routerLink 周围的括号将其绑定(bind)到该 HTML 属性/Angular 指令。这是否意味着它们是 Angular 用来计算表达式的指针?像 [id]="movieId" 相当于 Angular 1 中的 id="movie-{{movieId}}" 吗?

最后是括号:

<button (click)="toggleImage($event)">

这些仅用于 DOM 事件吗?我们可以使用其他事件,例如 (load)="someFn()"(mouseenter)="someFn()"

我想真正的问题是,这些符号在 Angular 2 中是否有特殊含义?了解何时使用每个符号的最简单方法是什么?谢谢!!

最佳答案

可在此处找到所有详细信息:https://angular.io/docs/ts/latest/guide/template-syntax.html

  • directiveName - 是结构指令的简写形式,其中长形式只能应用于 <template>标签。短形式隐式地将元素包装在 <template> 中应用的位置。 .

  • [prop]="value"用于对象绑定(bind)到属性(Angular 组件或指令的 @Input() 或 DOM 元素的属性)。
    有特殊形式:

    • [class.className]绑定(bind)到 css 类以启用/禁用它
    • [style.stylePropertyName]绑定(bind)到样式属性
    • [style.stylePropertyName.px]绑定(bind)到具有预设单位的样式属性
    • [attr.attrName]将值绑定(bind)到属性(在 DOM 中可见,而属性不可见)
    • [role.roleName]绑定(bind)到 ARIA Angular 色属性(尚不可用)
  • prop="{{value}}"将一个值绑定(bind)到一个属性。该值被字符串化(也称为插值)

  • (event)="expr"将事件处理程序绑定(bind)到 @Output()或 DOM 事件

  • #var#var根据上下文有不同的功能

    • *ngFor="#x in y;#i=index" 中创建迭代的范围变量
      (在 beta.17 中,这被更改为 *ngFor="let x in y; let i=index"`)
    • 在 DOM 元素上 <div #mydiv>对元素的引用
    • 在 Angular 组件上引用该组件
    • 在作为 Angular 组件或具有 Angular 指令的元素上 exportAs:"ngForm"已定义,#myVar="ngForm"创建对此组件或指令的引用。

关于angular - Angular2中圆括号、括号和星号有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944749/

相关文章:

javascript - 如何计算对象属性值并在动态按钮中显示单独的值并将单击事件分配给它们

html - 根据 Angular 中的条件显示可点击的列表项

javascript - Angular Material 2 选项卡动态内容

Angular 2 - 消除 keyUp 事件

css - 取消选择 ng2-smart-table 中的第一行搜索

node.js - Angular CLI 需要的 Node.js 版本最低为 v14.20、v16.13 或 v18.10

javascript - typescript 中的对象长度?

具有可观察的 Angular 形式

angular - 在 Angular Nrwl Nx 中创建组件作为库

angular - 为什么我在 Angular 2 中遇到 "UNMET PEER DEPENDENCY"错误