34 votes

Angular 2: accéder à un élément depuis le Component, getDocumentById ne fonctionne pas

J'ai un composant Angular 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 document de nom". Je vois que dans d'autres articles, nous pouvons faire quelque chose de similaire en utilisant @ViewChild, mais je ne vois pas comment nous pouvons utiliser cela avec un div, des idées?

64voto

JayChase Points 5565

Vous pouvez utiliser @ViewChild avec un div par l'ajout d'un TemplateRef.

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'angle d'approche pour faire des choses comme cela.

13voto

Seid Mehmedovic Points 6522

Ajoutez la 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);
   }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X