首页 文章

绑定到函数时如何触发角度变化检测?

提问于
浏览
2

从这两个帖子:

我理解'Change Detection'发生时DOM是如何更新的 . 我从"Everything you need to know about change detection in Angular"无法理解的是Angular如何跟踪函数内部使用的属性,因此它应该运行'Change Detection' .

我们假设这是父组件视图 .

<child [prop]="func()"></child>

其中 func()

func() { return this.parentProp }

parentProp 尚未在模板中使用 . 如果 parentProp 被服务更改,Angular如何知道 func() 依赖于 parentProp ,因此应该触发'Change Detection'并更新视图 .

1 回答

  • 7

    Angular不了解或关心函数的内容 .

    每次更改检测运行时,Angular都会调用 func() ,并比较前一个结果是否与当前结果相同 .

    因为调用函数并比较结果要比仅将前一个值与当前值进行比较要昂贵得多,所以最好使用事件来更新具有函数结果的属性,并将视图仅绑定到属性,而不是绑定到属性功能直接 .

    如果函数在后续调用中返回不同的值(具有相同的参数值),您将在开发模式中获得异常,例如

    自上次检查后,模型已更改

相关问题