【问题标题】:How this piece of code running change detection angular?这段代码如何运行改变检测角度?
【发布时间】:2020-02-05 10:02:12
【问题描述】:
ngAfterViewinit(){ 
var f=function(){
      this.a="changing val"
    }
    document.getElementById('d').addEventListener('click',f.bind(this));
}

角度运行变化如何检测和更新此点击事件的视图?据我所知,变更检测适用于角度上下文、区域封装事件并运行变更。

这里我使用的是原生 dom 事件;如果我们使用 angularjs,我们必须手动运行摘要循环,但是即使点击事件在上下文之外,angular 怎么知道?

【问题讨论】:

  • 请不要在生产中使用此代码,角度有更好的方法来做同样的事情

标签: javascript angular dom-events angular2-changedetection


【解决方案1】:

您在 Angular 代码中注册的每个回调都会被区域捕获,然后 Angular 会收到通知以触发更改检测。区域通过猴子修补本地 DOM 方法来工作,在本例中为 addEventListener。这个方法在这一点上不再是原生浏览器方法,而是 zone.js 的替代品,它可以让你做你想做的事,但之后会通知 Angular。

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 2018-07-30
    • 2013-11-11
    • 2015-02-05
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多