Угловой | Запустить событие на другой кнопке - PullRequest
0 голосов
/ 07 ноября 2018

(Неверный вопрос. Вам не нужно обращаться к нему. Спасибо.)

Решение: используйте общую переменную, а не $ event.


Я хочу запустить событие на других кнопках.

Я использую $event, но не могу немедленно вызвать функцию.


.html

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

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

Когда кнопка 2 нажата, я хочу запустить (onSelect) событие для # imageUpload.

(onSelect) имеет параметр. (event.files: список выбранных файлов)

Если нажать кнопку1 для запуска,

и я хочу поместить значение по умолчанию в $ 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 голосов
/ 07 ноября 2018

Что вы хотите, чтобы вызвать событие onSelect. Здесь следует отметить, что onSelect - это не function, а event. Вы не должны вызывать event вместо вызова function, который фактически вызывает его.

Поскольку вы используете onSelect, которое является пользовательским событием, поэтому вы должны использовать некоторое Directive для того же самого. Итак, вам нужно получить доступ к директиве внутри компонента и вызвать функцию, которая вызывает событие (EventEmitter);

Код Сью-до

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

 value : string;

 onSelect = new EventEmitter();

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

}

Компонент html

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

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

Компонент ц

@ViewChild('myDirective') myDirective : MyDirective;

...
clickTest() {
    this.myDirective.selectionMade();   // In this section, call (onSelect).
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...