角度|在其他按钮上运行事件

时间:2018-11-07 08:06:44

标签: html angular typescript event-handling

(无效问题。您无需引用它。谢谢。)

解决方案:使用公共变量而不是$ event。


我想在其他按钮上运行事件。

我使用$event,但无法立即调用函数。


.html

<p-fileUpload (onSelect)="runSelect($event)"
    accept="image/*" #imageUpload></p-fileUpload>

<button (click)="callImageSelect()" #button2></button>

按下button2时,我要在#imageUpload上运行(onSelect)事件。

(onSelect)有一个参数。 (event.files:所选文件的列表)

如果按下button1进行运行,

我想将默认值放入$ event。

所以我发现的方法是使用viewChild


.ts

@ViewChild('imageUpload') imageUpload;

...
callImageSelect() {
    this.imageUpload.**onSelect()**;   // In this section, call (onSelect).
}

runSelect(event) {
     event.files.push(defalut);
     // Here I put the default value for event.
}

有什么好方法吗?

谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

您要触发事件'Default data'。这里要注意的一点是onSelect不是onSelect,而是function。您不应调用event,而应调用实际上触发它的event

由于您使用的是function这是自定义事件,因此您必须同时使用某些onSelect。因此,您应该做的是,访问组件内部的Directive并调用触发事件的函数(EventEmitter);

起诉代码

Directive

组件html

@Directive(selector="my-directive")
public class MyDirective {

 value : string;

 onSelect = new EventEmitter();

 public selectionMade(){
      this.onSelect.emit(value);
 }

}

组件ts

<button (onSelect)="runSelect($event)" myDirective #myDirective="myDirective"></button>

<button (click)="clickTest()" #button2></button>