为什么将事件的String参数替换为mouseEvent?

时间:2019-02-13 17:10:27

标签: angular eventemitter

我正在尝试通过事件发射器将一个孩子的图像src发送给父母,我知道了,但是     立即将字符串替换为mouseEvent对象。     为什么会发生这种情况,我该怎么做才能阻止这种情况发生?     谢谢!

Angular 5

html-parent:

<!-- 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-child:

<!-- 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对象替换它。

1 个答案:

答案 0 :(得分:0)

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

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

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