2

我想向Angular 组件内的iframe 加载事件添加一个事件侦听器。

我知道我可以使用ViewChild装饰器,然后访问element.nativeElement.addEventListener

但是,为了在 Angular 内部处理 DOM 时遵守最佳实践,访问 nativeElement 上的 addEventListener 仍然被认为是平台无关的吗?还是我将我的应用程序绑定到纯浏览器应用程序?

谢谢

4

2 回答 2

3

你试过这个吗?

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

它似乎适用于stackblitz

于 2018-06-07T06:33:21.300 回答
3

如果您想要角度方式,那么我建议您创建如下所示的指令并将其附加到您的 dom 元素

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

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

@HostListenerin 指令允许您将事件与您的指令绑定的宿主元素绑定。

html

<iframe IFrame> ..rest code
于 2018-06-07T06:40:14.700 回答