Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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
Javascript FormControl';s的设置值实际起作用了吗?_Javascript_Angular_Performance_Angular Material_Angular Forms - Fatal编程技术网

Javascript FormControl';s的设置值实际起作用了吗?

Javascript FormControl';s的设置值实际起作用了吗?,javascript,angular,performance,angular-material,angular-forms,Javascript,Angular,Performance,Angular Material,Angular Forms,例如,我有一个巨大的字符串数组,字符串的数量随着时间的推移不断增加(我每秒都会通过websocket更新数组)。 我只需要显示组件中的所有字符串。嗯,最简单的解决方案是ngFor并将每个字符串包装在div中,但我不喜欢在组件中使用几百个div的想法。 因此,我决定尝试使用这样一个文本区域(简短): 所以,我的问题是——这个解决方案的可靠性、智能性和快速性如何 也许还有其他更聪明的方法来解决这个琐碎的任务。 (顺便说一句,我的堆栈是有角度的7,有角度的材料) 提前感谢。我认为对于单行更新,没有什么

例如,我有一个巨大的字符串数组,字符串的数量随着时间的推移不断增加(我每秒都会通过websocket更新数组)。
我只需要显示组件中的所有字符串。嗯,最简单的解决方案是ngFor并将每个字符串包装在div中,但我不喜欢在组件中使用几百个div的想法。
因此,我决定尝试使用这样一个文本区域(简短):

所以,我的问题是——这个解决方案的可靠性、智能性和快速性如何

也许还有其他更聪明的方法来解决这个琐碎的任务。
(顺便说一句,我的堆栈是有角度的7,有角度的材料)


提前感谢。

我认为对于单行更新,没有什么好方法可以持续更新大数据对象。在Angular中,如果模板中引用的对象发生更改,它将完全重新渲染,在您的情况下,它将生成过时的渲染,因为您以前的数据日志不会更改。。。因此,您必须将从请求中获得的日志与显示给用户的数据分开,以避免大数据导致UI崩溃

一些想法:

  • 创建表格:为标准角度材质创建数据源 表,从您从套接字获得的日志中,但仅使用表datasource get上的数据:我的意思是,每当表请求其数据时,您都会检查 不断增长的对象,并相应地返回。例如, 您可以使用分页,或设置“刷新”按钮并仅重新渲染 根据用户需求。(这方面的良好开端是

  • 提取到较小的块: 创建一个“bucket数组”,只推到“bucket”上。例如:每个bucket可以容纳100行日志,只要当前bucket已满,您就只更新它。这样,只有最后1-99行被重新渲染,其他项不会被重新渲染

  • 创建数据包 创建对象,即线,并仅在新数据超过给定长度时更新它们。例如,您仅在50条新线到达后更新视图,或每x.秒更新一次视图-这样可以将渲染和websocket事件分开,为UI渲染留出时间


  • “可靠、智能和快速”?不要使用角度。
    console.time('testOne');doStuff();console.timeEnd('testOne');
    @PHPglue('testOne');
    @PHPglue是的,回答很好:)这可能是一个解决方案:))我想问,为什么用户需要看到一个由数百个项目组成的列表,这些项目在视觉上无法访问,更新得如此频繁。看起来这对他们没用。嗯,这是一些显示当前工作设备的日志,当值被转储到文本区域时,用户应该以任何有意义的方式“工作”这些设备?谢谢,你给了我一些信息供我考虑。。。现在在component中,我只是使用auditTime(1000)来“减慢”渲染速度。。。有点像你的第三个建议。。。
    
    <mat-form-field>
      <textarea matInput [formControl]='myArrayofStrings'></textarea>
    </mat-form-field>
    
    this.myArrayofStrings.setValue(newArray);