Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 多个事件触发相同的方法_Angular - Fatal编程技术网

Angular 多个事件触发相同的方法

Angular 多个事件触发相同的方法,angular,Angular,但当以这种方式拆分此事件时,效果很好 ERROR DOMException: Failed to execute 'setAttribute' on 'Element': '(mouseout,' is not a valid attribute name. 从技术上讲,您可以在mouseover和mouseout事件上创建一个指令 然后从中公开一个@Output属性来调用组件函数 大概是这样的: 指令: <div class="someClass" (mouseout)="someMe

但当以这种方式拆分此事件时,效果很好

ERROR DOMException: Failed to execute 'setAttribute' on 'Element': '(mouseout,' is not a valid attribute name.

从技术上讲,您可以在
mouseover
mouseout
事件上创建一个指令

然后从中公开一个
@Output
属性来调用组件函数

大概是这样的:

指令:

<div class="someClass" (mouseout)="someMethod()" (mouseover)="someMethod()"</div>
import{Directive,HostListener,Output,EventEmitter}来自“@angular/core”;
@指示({
选择器:“[appListener]”
})
导出类ListenerDirective{
@Output()appListener:EventEmitter用于您的ref


你不能,这种语法不受支持,也没有简单的方法来缩短它。你可以在组件代码(类型脚本)中做类似的事情,你可以在一个循环中注册多个事件,但这比你在html中编写的代码要多得多。
<div class="someClass" (mouseout)="someMethod()" (mouseover)="someMethod()"</div>
import { Directive, HostListener, Output, EventEmitter } from '@angular/core';

@Directive({
  selector: '[appListener]'
})
export class ListenerDirective {

  @Output() appListener: EventEmitter<any> = new EventEmitter();

  constructor() { }

  @HostListener('mouseover')
  onMouseOver(event) {
    this.appListener.emit(event);
  }

  @HostListener('mouseout')
  onMouseOut(event) {
    this.appListener.emit(event);
  }

}
<div (appListener)="someFunction($event)">
  Here is some text in the DIV
</div >