2017-06-07 3 views
0

Ich habe einen einzelnen Rückruf, den ich von mehreren Ereignissen ausgelöst haben möchte. Ich habe versucht,Wie kann ich einen Verweis auf einen vorhandenen Rückruf an @HostListener übergeben?

userIsActive(){ 
    //do something 
} 
@HostListener('document:mousemove') this.userIsActive; 
@HostListener('document:keypress') this.userIsActive; 
@... 

Aber es funktioniert nicht, duplicate identifier 'userIsActive'. Ich weiß, ich kann neue Funktionen als Callbacks definieren,

aber 2 neue Funktionen mit beliebigen Zahlen erstellen scheint unnötig und weniger lesbar. Gibt es eine Möglichkeit, einen Verweis auf einen vorhandenen Rückruf an @HostListener weiterzuleiten?

Antwort

2

Es gibt keine Notwendigkeit, mehrere Methoden zu definieren, Sie können einfach die gleiche Methode mehrmals dekorieren.

Zum Beispiel:

@HostListener('window:keyup') 
    @HostListener('window:keydown') 
    handle() { 
    console.log('happened') 
    } 
+0

Es ist technisch nicht die Frage zu beantworten, aber es ist gut genug für meine Zwecke. Für jemanden, der hier in der Zukunft endet, gibt es eine Möglichkeit, eine existierende Funktion zu referenzieren oder nicht? – adamdport

+0

so referenzieren Sie es mehrfach, schreiben Sie es einmal und dekorieren es mehrmals, oder meinen Sie eine Funktion, die Sie nicht selbst schreiben? Vielleicht etwas aus einer anderen Klasse oder Bibliothek? – toskv

+0

Ja, eine Funktion von einem Import referenzieren, kann es getan werden? – adamdport

Verwandte Themen