angular - 在 Angular 中手动触发变化检测

标签 angular angular2-changedetection

我正在编写一个具有属性 Mode(): string 的 Angular 组件。

我希望能够以编程方式设置此属性,而不是响应任何事件。

问题是在没有浏览器事件的情况下,模板绑定(bind) {{Mode}} 不会更新。

有没有办法手动触发这种变化检测?

最佳答案

尝试其中之一:

  • ApplicationRef.tick() - 类似于 AngularJS 的 $rootScope.$digest() -- 即检查完整的组件树
  • NgZone.run(callback) - 类似于 $rootScope.$apply(callback) -- 即,评估 Angular 区域内的回调函数。我认为,但我不确定,这最终会在执行回调函数后检查完整的组件树。
  • ChangeDetectorRef.detectChanges() - 类似于 $scope.$digest() -- 即只检查这个组件及其子组件

您可以将 ApplicationRefNgZoneChangeDetectorRef 注入(inject)到您的组件中。

关于angular - 在 Angular 中手动触发变化检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34827334/

相关文章:

angular - 从 Google API 加载 auth2 时不会运行更改检测

jquery - Angular2 - 删除单击删除按钮的行或列

angular - 如何在命名 socket 是未命名 socket 的子代时导航到路线

angular - Ionic native 文件插件的 getFile() 方法

angular - 在 Angular2 中登录后刷新标题

Angular 2 形式 + OnPush

forms - Angular Reactive Forms - "recursive"表单

angular - 在点击事件上发送输入值

angular - 为什么需要使用默认更改检测策略调用 detectChanges()?

javascript - 使用 IterableDiffer 在 Angular 8 中获取数组大小更改