如何强制组件在Angular 2中重新渲染?

推荐答案

在检测到更改后进行渲染.要强制进行更改检测,以便已更改的零部件特性值传播到DOM(然后浏览器将在视图中呈现这些更改),以下是一些选项:

  • ApplicationRef.tick()-类似于Angular 1的$rootScope.$digest()--即判断完整的组件树
  • NgZone.run(callback)-类似于$rootScope.$apply(callback)--即计算Angular 2区域内的回调函数.我认为,但我不确定,这最终会在执行回调函数后判断完整的组件树.
  • ChangeDetectorRef.detectChanges()-与$scope.$digest()类似——即,仅判断此组件及其子组件

您需要导入,然后将ApplicationRefNgZoneChangeDetectorRef注入组件.

对于您的特定场景,如果只更改了一个组件,我建议使用最后一个选项.

Angular相关问答推荐

为什么当没有可观察对象发出值时,我的RxJS合并订阅会触发?

文件阅读器未正确给出某些CSV文件的结果

Angular :仅当 Select 第一个日期时才显示第二个日期字段

将Angular 17中的http服务与独立组件一起使用

如何在Angular 17 SSR中处理Swiper 11 Web组件事件

带输入的单位测试Angular 分量.需要

Angular 环境本地无文件替换

AG网格Angular 快捷菜单调用函数

Angular router-outlet 未渲染

使用指令的 Angular 自定义验证在 ng-change 中无法正常工作

ngRouterOutlet和组件生命周期使用自定义模板渲染的问题

为什么Angular的ViewEncapsulation枚举有没有值为1的键?

Angular APP_INITIALIZER 中的 MSAL 身份验证

Angular 在关闭另一个对话框后打开另一个对话框的最佳做法是什么?

console.log 返回 api 数据但 ERROR TypeError: Cannot read properties of undefined reading 'name'

如何以编程方式关闭 ng-bootstrap 模式?

如何从父路由的组件访问激活的子路由的数据?

为什么 Angular2 routerLinkActive 将活动类设置为多个链接?

无法获得 angular-material md-sidenav 的 100% 高度

如何在 Angular cli 项目中包含来自 node_modules 的assets