javascript - *ngFor 如何使用 Angular 2 中的模板变量?

标签 javascript angularjs node.js angular angular2-template

主要组件:

HTML

<event-thumbnail *ngFor='let event1 of events' #thumbnail  [event2]="event1" (eventClick)='handleEventClicked($event)'>Hello</event-thumbnail>
<button class='btn btn-primary' (click)="thumbnail.alertFoo()">alert id</button>
<button class='btn btn-primary' (click)='thumbnail.handleClickMe()'>click me!</button>

事件缩略图组件

  alertFoo(){
    alert("id called");
  }

  handleClickMe(){
    this.eventClick.emit('foo');
    alert('click');
  }

在上面的代码中,当使用 *ngFor ie 时,我无法使用缩略图 -> 模板变量来使用按钮。不会通过缩略图调用alertFoo 和handleClickMe()。我也尝试将它包装在 div 内,但仍然不起作用。仅当我将整个代码包含在带有 *ngFor 的 div 中时,它才有效,即还有显示不需要的多个按钮的按钮。我想了解 ngFor 的工作原理是否有一些解决方案可以解决上述问题,我希望事件重复但按钮仅显示一次。

最佳答案

使用ViewChild以此目的。这是一个例子。由于不确切知道您的组件是如何命名的,我在这里使用虚拟名称。所以家长:

模板:

<button (click)="alertFooInChild()">Click</button>

TS:

@ViewChild(AppChild) appChild: AppChild;

alertFooInChild() {
  // call the method in the child
  this.appChild.alertFoo();
}

这是一个demo plunker :)

关于javascript - *ngFor 如何使用 Angular 2 中的模板变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42739113/

相关文章:

javascript - 是否可以使用 worker_threads 制作异步 renderToString?

javascript - 如何更改 AJax 响应上的图标?

javascript - 如何映射对象数组并将它们作为按 "categories"排序的新对象数组返回

javascript - AngularJS 自定义指令丢失根属性

javascript - AngularJS:为什么我的 ng-options 没有出现?

javascript - 我可以用 node express 加载 css 文件,但它不起作用,一些 css 文件可以工作

node.js - Mongoose 和 findAndModify

javascript - 如何具有固定宽度的灵活高度

javascript - ng-model 似乎仅以一种方式绑定(bind)在模态视图内的 ion-radio 按钮上

node.js 为机器人聊天创建 'server side socket' (聊天脚本)