Angular 2: accéder à un élément à partir du composant, getDocumentById ne fonctionne pas
J'ai un composant angulaire 2 où je veux récupérer un élément div
<div id ="myId">
par son id. J'essaie de faire: document.getElementById("myId")
dans mon composant (TypeScript), mais j'obtiens une erreur: "Impossible de trouver le nom du document". Je vois que dans d'autres messages, nous pouvons faire quelque chose de similaire en utilisant @ViewChild, mais je ne vois pas comment nous pouvons l'utiliser avec un div, des idées?
2 réponses
Vous pouvez utiliser @ViewChild avec un div en ajoutant un TemplateRef .
Le Modèle
<div id ="myId" #myId>
Composant
import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
@ViewChild('myId') myId: ElementRef;
constructor() {
}
ngAfterViewInit() {
console.log(this.myId.nativeElement);
}
}
Ce billet de blog par Kara Erickson est une très bonne lecture pour se familiariser avec l'approche angulaire de faire des choses comme ça.
Ajouter variable de référence de Modèle à l'élément auquel vous devez accéder:
<div #myDiv></div>
Et dans le composant:
class MyComponent implements AfterViewInit {
@ViewChild('myDiv') myDiv: ElementRef;
constructor() {}
ngAfterViewInit() {
console.log(this.myDiv);
}
}