2016-06-24 11 views
0

Hier möchte ich überprüfen, wenn Benutzer klicken Sie außerhalb meiner "DropdownComponent" -Element als einige Daten ausblenden. Aber "this.templateRef.nativeElement.find" Ich bin nicht in der Lage, "find()" -Methode in angularJS2 zu bekommen.AngularJs2 Holen Sie die find() Methode in der Komponente für Element

import { Component, EventEmitter, ElementRef, Output, HostListener } from '@angular/core';  
export class DropdownComponent{ 
showValue = true; 

constructor(private templateRef: ElementRef) { 
}; 

@HostListener('document:click', ['$event']) 
handleKeyboardEvent(kbdEvent: any) { 
    console.log("---"+ kbdEvent); 
    var isClickedElementChildOfDropdownComponent = this.templateRef.nativeElement.find(kbdEvent.target).length > 0; 

    if(isClickedElementChildOfDropdownComponent) { 
     return; 
    } 

    this.showValue = false; 
} 

}

+0

Vielleicht könnten Sie verwenden, 'querySelectorAll' querySelectorAll (this.templateRef.nativeElement, 'copy-me') – AngJobs

Antwort

0

Verwenden contains,

@HostListener('document:click', ['$event']) 
handleKeyboardEvent(kbdEvent: any) { 

    var isClickOutside = !this.templateRef.nativeElement.contains(kbdEvent.target); 

    if(isClickOutside) { 
     return; 
    } 

    this.showValue = false; 
}