Угловой 2: доступ к элементу из компонента, getDocumentById не работает

У меня есть компонент Angular 2, где я хочу получить элемент div <div id ="myId"> по его идентификатору. Я пытаюсь сделать: document.getElementById("myId") в моем компоненте (TypeScript), но я получаю ошибку: "не могу найти имя документа". Я вижу, что в других постах мы можем сделать что-то подобное, используя @ViewChild, однако я не понимаю, как мы можем использовать это с div, есть идеи?

2 ответа

Решение

Вы можете использовать @ViewChild с div, добавив TemplateRef.

шаблон

    <div id ="myId" #myId>

Составная часть

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

Этот пост в блоге Кары Эриксон очень хорош для ознакомления с подходом Angular к таким вещам.

Добавьте переменную Template Reference к элементу, к которому вам нужен доступ:

<div #myDiv></div>

И в компоненте:

class MyComponent implements AfterViewInit {
   @ViewChild('myDiv') myDiv: ElementRef;

   constructor() {}

   ngAfterViewInit() {
      console.log(this.myDiv);
   }
}
Другие вопросы по тегам