Angular将2个输出事件组合起来调用1个函数

时间:2018-01-19 12:38:58

标签: html angular

我想知道Angular 4中是否有两个输出事件可以调用1个函数?

e.g。

<input type="button" value="send" (click, keydown.enter)="doMagic()"/>

而不是

<input type="button" value="send" (click)="doMagic()" (keydown.enter)="doMagic()"/>

@HostListener不是一个选项。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

它似乎并非如此 - 至少不是从这个问题中要求它作为一个功能:https://github.com/angular/angular/issues/6675

答案 1 :(得分:2)

替代解决方案 - 可能值得考虑。

模板:

<input #send type="button" value="send" />

组件:

@ViewChild('send') sendElement: ElementRef;
sub: Subscription;
ngAfterViewInit() {
     this.sub = Observable.fromEvent('click', this.sendElement)
        .merge(Observable.fromEvent('keydown.enter', this.sendElement))
        .map(t=> this.doMagic()).subscribe();
}

ngOnDestroy() {
  this.sub.unsubscribe();
}

doMagic() {
  ...
}