Angular 2 - ngFor 不在锚点上生成(点击)
Angular 2 - ngFor not generating (click) on an anchor
我遇到了 Angular 的 *ngFor 结构指令的奇怪行为。
此代码...
<a *ngFor="let item of addMenuItems" href="#" (click)="onAddClicked(item)">{{item}}</a>
... 当数组包含两项时生成此内容:
<a href="#">item 1</a>
<a href="#">item 2</a>
或者换句话说,它生成除 (click)="onAddClicked(item)" 部分之外的所有内容..
这种奇怪行为的原因可能是什么?
谢谢
莉安娜
在检查 DOM/绑定事件的元素时,事件绑定不明确可见是很常见的。
检查事件侦听器,您应该会看到如下内容:
a
Function vendor.js:86289
Type Bubbling
其中对 vendor.js
的引用是您的 onAddClicked
。
重要的是要记住 angular 在浏览器中显示之前编译,因此它识别 (click)
绑定/属性,然后将其转换为 addEventListener()
绑定那个元素。
如您所知,*ngFor 中的 * 只是在幕后生成的模板的糖语法。拥有它意味着它将点击事件附加到模板的每个相应子项(锚点),但它不会为其生成标记。它附加到元素本身。您很可能会在浏览器开发人员工具的事件选项卡中看到它
我遇到了 Angular 的 *ngFor 结构指令的奇怪行为。
此代码...
<a *ngFor="let item of addMenuItems" href="#" (click)="onAddClicked(item)">{{item}}</a>
... 当数组包含两项时生成此内容:
<a href="#">item 1</a>
<a href="#">item 2</a>
或者换句话说,它生成除 (click)="onAddClicked(item)" 部分之外的所有内容..
这种奇怪行为的原因可能是什么?
谢谢
莉安娜
在检查 DOM/绑定事件的元素时,事件绑定不明确可见是很常见的。
检查事件侦听器,您应该会看到如下内容:
a
Function vendor.js:86289
Type Bubbling
其中对 vendor.js
的引用是您的 onAddClicked
。
重要的是要记住 angular 在浏览器中显示之前编译,因此它识别 (click)
绑定/属性,然后将其转换为 addEventListener()
绑定那个元素。
如您所知,*ngFor 中的 * 只是在幕后生成的模板的糖语法。拥有它意味着它将点击事件附加到模板的每个相应子项(锚点),但它不会为其生成标记。它附加到元素本身。您很可能会在浏览器开发人员工具的事件选项卡中看到它