首页 > 解决方案 > 为什么事件的String参数被mouseEvent替换了?

问题描述

我正在尝试通过事件发射器将图像 src 从孩子发送到父母,我得到了它,但该字符串立即被 mouseEvent 对象替换。为什么会发生这种情况,我能做些什么来阻止这种情况发生?谢谢!

角 5

html-父:

<!-- language: HTML -->

<vcard-event name="Expo" place="Hotel California" 
(click)='viewImage($event);$event.preventDefault(); 
$event.stopPropagation();'></vcard-event>



ts-parent:
<!-- language: TypeScript -->

viewImage(src: String){
    this.srcImage = src;
    this.isOpen = !this.isOpen;
    console.log("SRC: ",this.srcImage);
} 

它返回:

SRC:../../assets/imgs/journey.png

但后来我得到:

$event.preventDefault 不是函数...

最后:

SRC:MouseEvent{isTrusted...} event.prevent... 不是函数

如果我删除 ";$event.preventDefault(); $event.stopPropagation();",它就不会发生,

但其他两条线仍然存在。

html-孩子:

<!-- language: HTML -->
<button  class="bigButton" (click)="viewImage()"> View Image</button>

ts-孩子:

<!-- language: TypeScript -->
@Output() click: EventEmitter<string> = new EventEmitter<string>();

viewImage(){
    this.click.emit("../../assets/imgs/journey.png");
} 

它应该显示:

SRC:../../assets/imgs/journey.png

并停在那里,而不是用 MouseEvent 对象替换它。

标签: angulareventemitter

解决方案


click 已经是角度定义的输出,您应该将 EventEmitter 的名称更改为不同的名称。

@Output() imageClick: EventEmitter<string> = new EventEmitter<string>();

 viewImage(){
   this.imageClick.emit("../../assets/imgs/journey.png");
 } 

推荐阅读