Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Angular ChangeDetectionStrategy使具有多个输入的表格更快?_Angular_Angular Changedetection - Fatal编程技术网

如何使用Angular ChangeDetectionStrategy使具有多个输入的表格更快?

如何使用Angular ChangeDetectionStrategy使具有多个输入的表格更快?,angular,angular-changedetection,Angular,Angular Changedetection,我有一个角度应用程序,它有一个表,包含200多行,每个行有10个输入。如果我转到最后一页,在输入中添加一些文本,效果会很好,但是如果我转到最后一页,按tab键并编辑值,则速度会开始变慢 这不是网络问题,我已经有了屏幕上的所有数据。问题是,当我传递所有的输入值时,随着我改变的越多,输入的速度就越慢,就像输入滞后一样 我尝试在我的组件中添加changedetextection:ChangeDetectionStrategy.OnPush,速度变快了,但我必须单击屏幕才能第一次呈现表格。另外,我注意到

我有一个角度应用程序,它有一个表,包含200多行,每个行有10个输入。如果我转到最后一页,在输入中添加一些文本,效果会很好,但是如果我转到最后一页,按tab键并编辑值,则速度会开始变慢

这不是网络问题,我已经有了屏幕上的所有数据。问题是,当我传递所有的输入值时,随着我改变的越多,输入的速度就越慢,就像输入滞后一样

我尝试在我的组件中添加
changedetextection:ChangeDetectionStrategy.OnPush
,速度变快了,但我必须单击屏幕才能第一次呈现表格。另外,我注意到在表字段中搜索的速度要慢得多


是否有任何方法可以强制应用程序仅为当前显示的输入刷新更改检测

正如我所建议的那样,我使用了chrome开发工具,当我编辑表的输入值时,您可以看到随着时间的推移,随着按键的使用,响应会增加。


为了提高性能,首先需要弄清楚是什么导致了延迟

开发工具性能
  • 使用(或任何其他类似工具)在页面上记录和测量性能。示例输出:
  • 确定问题的原因。这是一个缓慢的JavaScript执行吗?这是一个网络问题

  • 相应地修复它


  • 与JavaScript相关的问题可能由许多原因引起。可能您正在循环中运行某些代码,这会导致额外的计算

    你在用什么桌子。是a,请参阅提高性能的工具(如分页)。如果你处理成千上万的记录,考虑使用数据网格(例如)。 例子
    请观看此演示,了解如何提高加载时间。

    为了提高性能,首先需要找出导致延迟的原因

    开发工具性能
  • 使用(或任何其他类似工具)在页面上记录和测量性能。示例输出:
  • 确定问题的原因。这是一个缓慢的JavaScript执行吗?这是一个网络问题

  • 相应地修复它


  • 与JavaScript相关的问题可能由许多原因引起。可能您正在循环中运行某些代码,这会导致额外的计算

    你在用什么桌子。是a,请参阅提高性能的工具(如分页)。如果你处理成千上万的记录,考虑使用数据网格(例如)。 例子
    请观看此演示,了解如何缩短加载时间。

    您尚未提供详细信息。你有没有弄清楚是什么原因造成了延迟(例如JS、网络)?您使用的是一些商业表格,还是自己编写的代码。Angular本身是非常优化的,如果你做得正确的话-它不需要任何更改检测操作。只有当你展示你正在做的事情时,人们才能帮助你改进代码。可以做的事情很多,但是性能调优非常复杂,而且是特定于具体情况的。没有一个神奇的多功能工具“仅用于当前显示的输入”听起来像是
    溢出:auto
    。考虑虚拟化,只渲染可见元素。角度CDK可以帮你:对不起,我想我应该更具体一些。我将更新这个问题。但这并不是对数据库的请求变慢或连接变慢,我已经在屏幕上显示了所有的数据,问题是当我传递所有的输入改变值时。输入会变慢,就像更改事件正在检查表中的所有其他输入一样。放大图中增长的区域。它显示了调用的确切函数。很可能您正在为每个循环(行/单元格)运行一些代码。确保删除任何console.log/debug语句-在循环中运行这200次可能会使浏览器崩溃。您尚未提供详细信息。你有没有弄清楚是什么原因造成了延迟(例如JS、网络)?您使用的是一些商业表格,还是自己编写的代码。Angular本身是非常优化的,如果你做得正确的话-它不需要任何更改检测操作。只有当你展示你正在做的事情时,人们才能帮助你改进代码。可以做的事情很多,但是性能调优非常复杂,而且是特定于具体情况的。没有一个神奇的多功能工具“仅用于当前显示的输入”听起来像是
    溢出:auto
    。考虑虚拟化,只渲染可见元素。角度CDK可以帮你:对不起,我想我应该更具体一些。我将更新这个问题。但这并不是对数据库的请求变慢或连接变慢,我已经在屏幕上显示了所有的数据,问题是当我传递所有的输入改变值时。输入会变慢,就像更改事件正在检查表中的所有其他输入一样。放大图中增长的区域。它显示了调用的确切函数。很可能您正在为每个循环(行/单元格)运行一些代码。确保删除任何console.log/debug语句-在循环中运行这200次可能会使浏览器崩溃。我用性能图像更新了问题。响应时间越来越慢。我认为更改检查正在应用于所有更改的输入。请提供可以应用检查的代码(如果您手动执行)。同样,Angular应该可以处理数百行而没有延迟-请参见此示例,Angular材质使用虚拟滚动显示10000行:。我用性能图像更新了问题。响应时间越来越慢。我认为更改检查正在应用于所有更改的输入。请提供可以应用检查的代码(如果您手动执行)。同样,Angular应该可以处理数百行而没有延迟-请参见此示例,其中Angular材质使用Virtual显示10000行