首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象更新,但在前端没有更新虚拟滚动列表

对象更新,但在前端没有更新虚拟滚动列表
EN

Stack Overflow用户
提问于 2020-02-24 12:23:15
回答 2查看 1.3K关注 0票数 2

复制: https://stackblitz.com/edit/angular-rf-virtual-scroll

预期行为:数据应附加在UI中的虚拟滚动列表中

实际行为

=>虚拟滚动列表未更新(前端) =>反应性表单数组对象完全更新(T)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-24 13:32:47

这是因为只有当对象的引用发生变化时,角度变化检测才会触发。但是,通过添加新元素,items.controls数组的引用保持不变。

您可以在添加一个新的controls array之后创建一个副本,如下所示:

代码语言:javascript
复制
addOneNew(item = [true, 9999999]){
  const obj = this.createItem(item)
  this.items.push(obj);
  this.items.controls = [...this.items.controls]
  console.log(this.items.value)
}

通过分配一个新数组,更改检测将看到您的更改并更新您的视图。

票数 2
EN

Stack Overflow用户

发布于 2020-02-24 13:33:16

希望这能帮上忙。

app.component.html

代码语言:javascript
复制
    <div class="container">
    <div class="content" [formGroup]="testForm">
        <ng-container formArrayName="data" *ngFor="let item of testForm.get('data')['controls']; let i = index">
            <div [formGroupName]="i">
                Name: <input class="form-control" style="margin-bottom: 5px;" type="text" formControlName="name">
            </div>
        </ng-container>
    </div>
    <div class="row">
        <button class="btn btn-primary" (click)="addItem()">Add Name</button>
    </div>
</div>

app.component.ts

代码语言:javascript
复制
export class AppComponent implements OnInit {
 testForm: FormGroup;
 currentIndex = 0;
 constructor(
  private formBuilder: FormBuilder
 ) {}

 ngOnInit() {    
  this.testForm = this.createTestForm();
  this.initializeArray();
 console.log(this.testForm);

}

createTestForm(): FormGroup {
 return this.formBuilder.group({
   data: this.formBuilder.array([])
 });
}

get data(): FormArray {
 return this.testForm.get('data') as FormArray;
}

initializeArray() {
 for (let index = 0; index < 20; index++) {
   this.addItem();
 }
}

 addItem() {
   this.data.push(this.formBuilder.group({name: [`Name${this.data.length}`]}));
   this.currentIndex = this.data.length;
 }

 }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60375904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档