Jak powiązać detektor zdarzeń w renderowanych elementach w Angular 2? Używam biblioteki przeciągnij i upuść dragula. Tworzy dynamiczny HTML, ale moje wydarzenie nie jest związane z dynamicznymi elementami HTML.Jak powiązać detektor zdarzeń dla renderowanych elementów w Angular 2?
Odpowiedz
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);
}
Jakiekolwiek ręczne czyszczenie potrzebne ('.removeEventListener()') po zniszczeniu komponentu lub czy Angular zajmie się tym? – kraftwer1
Nie, jeśli zarejestrujesz to w sposób imperatywny, musisz go koniecznie usunąć. –
Jeśli chcesz powiązać zdarzenie jak „kliknięcie” dla wszystkich elementów o tej samej klasy w świadczonych elementu DOM następnie można skonfigurować detektor zdarzeń przy użyciu następujących części kodu w komponenty. plik ts.
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");
});
});
}
Aby dodać EventListener do elementu kątowego 4, możemy użyć metody listen usługi Renderer2 (Renderer is deprecated, więc używaj Renderer2):
słuchać (target: Okno” '|' dokument '|' ciało '| any, eventName: string, callback: (event: dowolny) => Boolean | void):() => void
Przykład:
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');
});
}
}
- 1. Dodaj detektor zdarzeń do elementu formularza dodanego przez detektor zdarzeń
- 2. Jak usunąć detektor zdarzeń w rozszerzeniu Chrome
- 3. Jak powiązać właściwość z stylem szerokości piksela w Angular 2?
- 4. Detektor zdarzeń dla Androida dla cyklu życia aplikacji
- 5. Android: RadioGroup - Jak skonfigurować detektor zdarzeń
- 6. Niestandardowy detektor zdarzeń w aplikacji Android
- 7. ExtJS Siatka - Kliknij detektor zdarzeń
- 8. Powiązać procedurę obsługi zdarzeń z wieloma zmiennymi elementów w jQuery?
- 9. Jak dynamicznie powiązać wartość pola wyboru Angular 2
- 10. Angular 2 testy - pobierz style elementów DOM
- 11. Kolekcja dodaj detektor zdarzeń w kościele
- 12. Jak mogę dołączyć detektor zdarzeń resize okna w JavaScript?
- 13. Usuń detektor zdarzeń z nową biblioteką
- 14. Jak sprawdzić, czy element DOM ma detektor zdarzeń z Ruby
- 15. JavaScript "keydown" detektor zdarzeń nie działa
- 16. Zmień klasę elementów w ViewChild w Angular 2
- 17. Nie mogę przetestować widoczności elementów renderowanych w widoku szkieletowym
- 18. Prosty detektor zdarzeń nie działa - JS
- 19. Zdobądź indeks dla ... dyrektywy w Angular 2
- 20. kątowy 2 filtr ng Dla elementów zgodnych z ustawieniami użytkownika?
- 21. Skuteczność detektora zdarzeń JavaScript dla setek elementów DOM
- 22. Odsłuchiwanie zdarzeń, takich jak dodawanie nowych elementów w JavaScript
- 23. Waluta w Angular 2
- 24. W Angular 1.5, jak powiązać komponent atrybutu jako boolean?
- 25. Jak dodać detektor zdarzeń za pomocą Fluent NHibernate?
- 26. Jak korzystać z SASS dla komponentów w stylu Angular 2?
- 27. Dodawanie detektorów zdarzeń do wielu elementów
- 28. Przedszkole Komponenty dla dzieci - Angular 2
- 29. Jak wykorzystać URLSearchParams w Angular 2
- 30. Angular 2. Jak zastosować orderBy?
Co to są "renderowane elementy" lub "dynamiczne elementy HTML". Dodaj kod, który pokazuje, co próbujesz osiągnąć. –