【问题标题】:Does angular *ngFor directive needs trackBy anymore?角度 *ngFor 指令是否需要 trackBy 了?
【发布时间】:2019-06-18 21:30:22
【问题描述】:

app.component.html 文件:

<button (click)="update()">Add More</button>
<ul>
  <li *ngFor="let person of persons; trackBy: trackFn">
    {{ "Name:- " + person.name + " || Age:- " + person.age }}
  </li>
</ul>

app.component.ts 文件:

export class AppComponent {
  persons = [
    {
      name: "Huzaifa",
      age: 16
    },
    {
      name: "John",
      age: 28
    },
    {
      name: "Kerma",
      age: 22
    }
  ];

  update() {
    this.persons.push({
      name: "umair",
      age: 20
    });
  }
}

当我学习 Angular 7 时,我注意到我必须在更新数据时使用 trackBy 来跟踪项目。否则 Angular 正在更新应用 ngForOf 指令的整个 DOM。我们可以通过粉色突出显示从chrome的开发者工具

但是

现在即使不使用 trackBy 功能,我也不会遇到这个问题!

你注意到了吗?

帮帮我

如果在提问时做错了什么,请不要报告我...只要告诉我我的错误,我会尽力改善它..

【问题讨论】:

  • 你能举个例子吗?
    • {{ "Name:-" + person .name + " || Age:- " + person.age }}
  • export class AppComponent { people = [ { name: "Huzaifa", age: 16 }, { name: "John", age: 28 }, { name: "Kerma", age: 22 } ]; update() { this.persons.push({ name: "umair", age: 20 }); } }
  • 先生,第一条评论是 app.component.html,而另一条评论是 app.component.ts 文件。我的意思是与这种误解相关的部分文件

标签: angular


【解决方案1】:

我对来自 HTTP 请求的数据使用 angular 7 进行了尝试,但 trackBy 角度没有更新整个内容

【讨论】:

  • 是的,先生,我在 Angular 7 中也遇到过这个问题,但在 Angular 8 中,我不再面临这个问题了……可能是我的浏览器问题或我的观察失误
  • 你说的是 Angular 7 还是 8?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多