iframe внутри компонента angular2, свойство 'contentWindow' не существует для типа 'HTMLElement'

У меня есть iframe внутри компонента angular2, и я пытаюсь изменить содержимое iframe, открывая окно contentWindow.
Фрейм должен содержать простую кнопку.

Мой код:

    import { Component } from '@angular/core';
    @Component({
      moduleId: module.id,
      selector: 'component-iframe',
      template: '<iframe id="iframe"></iframe>'
    })
    export class ComponentIframe  {
      constructor() {
        let iframe = document.getElementById('iframe'); 
        let content = '<button id="button" class="button" >My button </button>';
        let doc =  iframe.contentDocument || iframe.contentWindow;
        doc.open();
        doc.write(content);
      doc.close();
    }
   }

Если я комментирую код конструктора и запускаю приложение, оно компилируется и работает правильно. Затем я раскомментирую и все работает отлично (кнопка присутствует в iframe).

Если я разлагаю код и запускаю приложение (npm start), у меня появляются ошибки компиляции с сообщением:

Свойство 'contentWindow' не существует для типа 'HTMLElement'

.

Я также попробовал альтернативный вариант помещения кода конструктора в ngOnInit (), ngAfterContentInit (), ngAfterViewInit (), но ошибка сохраняется.

Ответы на вопрос(1)

Решение Вопроса

Используйте вместо

import { Component, ViewChild, ElementRef } from '@angular/core';
@Component({
  moduleId: module.id,
  selector: 'component-iframe',
  template: '<iframe #iframe></iframe>'
})
export class ComponentIframe  {
  @ViewChild('iframe') iframe: ElementRef;

  ngAfterViewInit() {
    let content = '<button id="button" class="button" >My button </button>';
    let doc =  this.iframe.nativeElement.contentDocument || this.iframe.nativeElement.contentWindow;
    doc.open();
    doc.write(content);
    doc.close();
  }
}

Ваш ответ на вопрос