angular - 使用 EventEmitter 传递参数

标签 angular eventemitter angular2-directives

我有一个指令来初始化一个可在 DOM 元素上排序的 jQueryUI。 jQueryUI sortable 也有一组触发特定操作的回调事件。例如,当您 startstop排序元素。

我想通过 emit() 函数传递此类事件的返回参数,这样我就可以实际看到我的回调函数中发生了什么。我只是还没有找到通过 EventEmiiter 传递参数的方法。

我目前有以下内容。

我的指令:

@Directive({
    selector: '[sortable]'
})
export class Sortable {
    @Output() stopSort = new EventEmitter();

    constructor(el: ElementRef) {
      console.log('directive');
        var options = {
          stop: (event, ui) => {
            this.stopSort.emit(); // How to pass the params event and ui...?
          }
        };

        $(el.nativeElement).sortable(options).disableSelection();
    }
}

这是我的组件,它使用指令发出的事件:

@Component({
  selector: 'my-app',
  directives: [Sortable],
  providers: [],
  template: `
    <div>
      <h2>Event from jQueryUI to Component demo</h2>

      <ul id="sortable" sortable (stopSort)="stopSort(event, ui)">
        <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
        <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
        <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
      </ul>
    </div>
  `
})
export class App {
  constructor() {

  }

  stopSort(event, ui) { // How do I get the 'event' and 'ui' params here?
    console.log('STOP SORT!', event);
  }
}

如何在我的 stopSort() 函数中获取 eventui 参数?

这是我到目前为止的演示:http://plnkr.co/edit/5ACcetgwWWgTsKs1kWrA?p=info

最佳答案

EventEmitter 支持一个参数,该参数作为 $event 传递给您的事件处理程序。

将参数传递给 emit 时,将参数包装在事件对象中:

this.stopSort.emit({ event:event, ui: ui });

然后,当你处理事件时,使用$event:

stopSort($event) { 
  alert('event param from Component: ' +$event.event);
  alert('ui param from Component: ' + $event.ui);
}

Demo Plnkr

关于angular - 使用 EventEmitter 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35390765/

相关文章:

抛出异常后 Angular 2 不更新 View

html - *ngFor 中的 ngStyle 不起作用

javascript - 统一事件和 Promise 是 JS/Node

用于 2 路属性绑定(bind)的 Angular2 装饰器

javascript - 注销 session Angular2 NodeJS

javascript - Angular中关闭浏览器后执行API

Angular 5 EventEmitter 运行不正常

angular - 在组件模板中使用 eventEmitter.emit()

angular - *ngIf 不对 bool 值变化使用react

javascript - 避免 writeOut 到 ngModel 的指令 [Angular]