问题标签 [angular-changedetection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1235 浏览

angular - 角度变化检测仅更新部分页面

我正在开发一个 Angular 5.2 应用程序。我的基本组件中有 10 个选项卡。每个选项卡都有自己的组件( 4 个组件)。所以我的每个标签都有一个非常繁重的处理。现在,我的问题是,如果我更新任何选项卡的子组件,那么在所有选项卡及其子组件上运行 changeDetection,这会使我的应用程序非常慢。

有没有办法告诉角度在页面的特定部分运行更改检测?我知道这听起来有点奇怪,但我需要提高应用程序性能和真正的问题,我看到的是,Change-Detection 正在为整个页面运行(10 个选项卡,每个选项卡有 4 个组件)。

到目前为止,我没有发布任何代码,因为这个问题是一个通用问题,但如果有人认为该代码会有所帮助,我也可以这样做。

0 投票
2 回答
1676 浏览

angular - 值更改时不触发 ngIf

我有一个简单的 mat-spinner 应该在isLoadingis时触发true。变量按预期更改,但 mat-spinner 不可见。仅当我更改isLoading为 always时才可见true

我错过了什么吗?提前致谢!

app.component.ts:

app.component.html:

实用程序.service.ts:

编辑添加触发setter函数的组件:start.component.ts:

0 投票
1 回答
6186 浏览

angular - Angular 6 Change detection - 如何设置子组件?

我的父 Angular 组件有一个嵌套的子组件。该子组件是一个按钮列表。单击一个按钮时,会将一个值传递给子组件。然后该子组件会相应地更新为 id。我已经对孩子实施了一些变化检测。当孩子注册来自父母的更新时,它会运行 ngOnChanges 挂钩。在这里我调用我的后端并返回数据

我的代码工作正常,但它似乎是一个 hack。正如您在以下代码中看到的,我分离了 changeDetection 对象。在 ngOnChanges - 在订阅部分,我再次重新附加 cd。我不喜欢

你们能给我一些指示吗?

更新以响应答案

它确实为我提供了我想要的 ngOnChanges(changes: SimpleChanges) 结果。但它仍然给我们一个错误。说它是未定义的。

在此处输入图像描述

options 数组是 Challenge 上的嵌套数组

从 db 返回的对象

0 投票
0 回答
1103 浏览

javascript - Angular 6:如何检测 Angular 中的表数据变化?

我通过将表绑定到数组来生成一个非常简单的表。我使用contenteditable="true"所以我可以在客户端编辑每个单元格数据。这是我的代码:

如何检测contenteditable设置为true的单元格上的文本更改

0 投票
2 回答
138 浏览

angular - Select 不会在动态获取选项时呈现选项

在选择焦点上,我试图通过拨打服务电话来获取选项,但不知何故下拉菜单没有打开,我必须点击两次。

StackBlitz 链接: https ://stackblitz.com/edit/angular-select-example-3jvz1h?file=app%2Fapp.component.ts

0 投票
2 回答
3328 浏览

angular - 我应该总是使用 ChangeDetectionStrategy.OnPush

我应该总是ChangeDetectionStrategy.OnPush在我的组件中使用吗?

我总是听到它是多么OnPush令人惊叹,解决了这么多问题,加速了 Angular 应用程序,甚至摆脱了NgZone. 但如果是,为什么默认情况下不生成它ng g component

如果它如此神奇,那么我们应该一直使用它吗?

0 投票
1 回答
887 浏览

angular - Angular7 Reactive Forms 输入属性值在控制器/组件中没有变化,仅在 HTML 标记上

我制作了一个具有反应形式组的可重用组件。我有 2 个输入属性“名称”和“描述”,我正在使用 ngFor 设置这些输入属性来迭代组件。

不幸的是,即使我将表单控件组中的开始/默认值设置为输入属性,当我单击提交时,角度也会将这两个输入属性读取为“null”,而不是通过输入属性设置的值。

表单组 + 输入属性:

提交功能:

如果我尝试直接提交有效的输入属性的值,但是如果我对表单进行修改,我将不再提交更改后的值,这样就没有意义了。

0 投票
2 回答
1353 浏览

angular - Angular Material Change Detection using ngOnChanges throwing error, "ExpressionChangedAfterItHasBeenCheckedError"

我有一个组件的 Input 属性,如果当前数据未定义,我应该只显示。

我正在使用 ngOnChanges 来检测更改,但它会引发“ ExpressionChangedAfterItHasBeenCheckedError ”错误。

这是代码,

Stackblitz 链接:https ://stackblitz.com/edit/angular-snackbar-top-bdmsmz

有什么办法可以解决这个错误。

Stackblitz 错误信息

0 投票
1 回答
135 浏览

angular - 角局部变量变化检测

我有一个父级持有一个变量“值”并将这个变量与 2-way 数据绑定传递给一个子组件。父母如何知道这个变量的任何变化?

并在父 html

子组件是一个输入,为简单起见,我只放了一个,但在真正的应用程序中,我有几个需要使用 ngSwitch 动态显示的组件。

每当用户在任何这些子组件中键入内容时,我都需要父组件调用函数。

我可以在每个孩子上使用@Output,但它看起来不是很优雅,而且除了在父母身上实时更新值之外,我只需要知道什么时候。

角度中是否有类似“观察者”的东西来检查值的变化?

0 投票
1 回答
446 浏览

angular - Angular 6 视图未更新,即使使用 ChangeDetectorRef、ngZone 和 requestAnimationFrame

在我的component.ts中,我有一个将 WAV 音频数据转换为 MP3 的循环:

在我的component.html中,我的代码显示了到目前为止已转换的音频百分比:

在进行转换时,它会将正确的转换百分比实时记录到控制台,但视图仍停留在 0% 完成状态。一旦循环结束,它会立即跳到 100%。

我努力了:

  • this.cd.detectChanges();
  • 换行改变convertedPercentin的值zone.run()
  • 换行改变convertedPercentin的值requestAnimationFrame()

接下来我应该尝试什么?