要解决Angular虚拟滚动不会检测更改以添加响应式FormArray中的项目的问题,可以使用ChangeDetectorRef手动触发变更检测。
下面是一个示例代码,展示了如何在虚拟滚动中添加项目后触发变更检测:
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
constructor(private cd: ChangeDetectorRef) { }
addItem() {
// 添加项目到FormArray
this.formArray.push(new FormControl(''));
// 手动触发变更检测
this.cd.detectChanges();
}
通过这个解决方法,当你添加项目到FormArray时,Angular会立即检测到更改并更新虚拟滚动的视图。
注意:在使用ChangeDetectorRef手动触发变更检测时要小心,因为这可能会导致性能问题。只有在必要的情况下才使用它,以避免不必要的变更检测。