Angular2指令:如何检测DOM更改

汤姆·梅塔姆:

我想将Skrollr实现为Angular2属性指令。

因此,格式可能是:

<body my-skrollr>
</body>

但是,为了实现此功能,我需要能够检测包含标签(在本例中为<body>)下的子元素中DOM中的更改,以便可以调用skrollr.init()。refresh() ; 并更新库以使用新内容。

是否有我不知道的简单方法,还是我处理方法不正确?

GünterZöchbauer:

Angular并未为此提供内置功能。您可以使用MutationObserver来检测DOM更改。

@Directive({
  selector: '[my-skrollr]',
  ...
})
class MyComponent {
  constructor(private elRef:ElementRef) {}

  ngAfterViewInit() {
    this.observer = new MutationObserver(mutations => {
      mutations.forEach(function(mutation) {
        console.log(mutation.type);
      });   
    });
    var config = { attributes: true, childList: true, characterData: true };

    this.observer.observe(this.elRef.nativeElement, config);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章