Добавить слушатель события в элемент DOM в Angular 4

Я хотел бы добавить слушатель события в событие загрузки iframe внутри углового компонента.

Я знаю, что мог бы использовать ViewChild декоратор, а затем получить доступ к element.nativeElement.addEventListener

Однако для того, чтобы соответствовать рекомендациям при работе с DOM в Angular, доступ к addEventListener на nativeElement все еще считается независимым от платформы? Или я привязываю свое приложение к чисто браузерному приложению?

Спасибо

2 ответа

Решение

Если вам нужен угловой способ, я предлагаю вам создать директиву, как показано ниже, и прикрепить ее к элементу dom

@Directive({
  selector: `[IFrame]`
})
export class IFrameDirective {
  constructor(private el: ElementRef, private renderer: Renderer) { }

  @HostListener('load', ['$event'])
  iFrameLoad(event: Event) {
    alert('IFrame loaded');
  }
}

@HostListener Директива in позволяет вам связать событие с элементом host, с которым связана ваша директива.

HTML

<iframe IFrame> ..rest code

Ты пробовал это?

<iframe (load)="doSomething()">

Кажется, работает на stackblitz.

Другие вопросы по тегам