2017-01-12 18 views
6

मैं कोणीय 2 में प्रस्तुत तत्वों में एक ईवेंट श्रोता कैसे बांध सकता हूं? मैं ड्रैगला ड्रैग और ड्रॉप लाइब्रेरी का उपयोग कर रहा हूँ। यह गतिशील HTML बनाता है लेकिन मेरी घटना गतिशील HTML तत्वों के लिए बाध्य नहीं है।कोणीय 2 में प्रस्तुत तत्वों के लिए ईवेंट श्रोता को कैसे बाध्य करें?

+0

"प्रस्तुत तत्व" या "गतिशील HTML तत्व" क्या हैं। कृपया वह कोड जोड़ें जो दर्शाता है कि आप क्या करने का प्रयास करते हैं। –

उत्तर

15
import { AfterViewInit, Component, ElementRef} from '@angular/core'; 

constructor(private elementRef:ElementRef) {} 

ngAfterViewInit() { 
    this.elementRef.nativeElement.querySelector('my-element') 
           .addEventListener('click', this.onClick.bind(this)); 
} 

onClick(event) { 
    console.log(event); 
} 
+1

घटक को नष्ट करने के बाद किसी भी मैन्युअल सफाई की आवश्यकता है ('.removeEventListener()') या कोणीय इस पर ध्यान रखेगा? – kraftwer1

+1

नहीं, अगर आप इसे अनिवार्य रूप से पंजीकृत करते हैं, तो आपको इसे अनिवार्य रूप से हटा देना होगा। –

2

आप की तरह सभी गाया डोम तत्व में एक ही कक्षा होने तो आप घटकों में कोड की निम्न भागों का उपयोग करके एक घटना श्रोता सेट कर सकते हैं तत्वों के लिए 'क्लिक' एक घटना बाध्य करने के लिए चाहते हैं। टीएस फाइल

import { Component, OnInit, Renderer, ElementRef} from '@angular/core'; 

constructor(elementRef: ElementRef, renderer: Renderer) { 
    dragulaService.drop.subscribe((value) => { 
     this.onDrop(value.slice(1)); 
    }); 
} 

public onDrop(args) { 

    let [e, el] = args; 

    this.toggleClassComTitle(e,'checked'); 

} 


public toggleClassComTitle(el: any, name: string) { 

    el.querySelectorAll('.com-item-title-anchor').forEach(function (item) { 

     item.addEventListener('click', function(event) { 
       console.log("item-clicked"); 

     }); 
    }); 

} 
1

कोणीय 4 में एक तत्व के लिए एक EventListener जोड़ने के लिए, हम Renderer2 सेवा की विधि listen उपयोग कर सकते हैं (Renderer is deprecated, तो Renderer2 का उपयोग करें):

सुनने (लक्ष्य: 'खिड़की '|' दस्तावेज़ '|' शरीर '| कोई हो, घटनानाम: स्ट्रिंग, कॉलबैक: (घटना: किसी भी) => बूलियन | शून्य):() => शून्य

उदाहरण:

export class ListenDemo implements AfterViewInit { 
    @ViewChild('testElement') 
    private testElement: ElementRef; 

    constructor(private renderer: Renderer2) { 
    } 

    ngAfterViewInit() { 
     this.renderer.listen(this.testElement.nativeElement, 'click',() => { 
      this.renderer.setStyle(this.testElement.nativeElement, 'color', 'green'); 
     }); 
    } 
} 
संबंधित मुद्दे