角度推送不是推送而是替换列表中的数据

时间:2019-03-25 13:57:48

标签: angular typescript angular7

我已使用*ngFor将一些数据加载到视图中。

页面加载时,当前会将一些数据添加到列表的视图中。

在视图中,我有这个:

在app.component.html

<button (click)="addToList()"></button>


<ul *ngFor="let list of datalist">
  <li>{{ list.title }}</a></li>
</ul>

在app.component.ts

datalist = [];

ngOnInit() {
  // Loads data....
  this.datalist = myLoadedData; // So when the page is loaded some data is loaded into datalist and shown in view

}

addToList() {

  this.datalist.push(
    {
        title: 'Item 2'

      }
  );

}

我的问题是,当我单击按钮以将一些新数据推送到列表中时,并不是将新数据推送到列表中,实际上是在替换当前数据。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

我认为问题不在于推动,而在于您的约束力。

尝试一下:

addToList() {
this.datalist.push(
{
    title: 'Item 2'

  }
);
  this.datalist=[...this.datalist];
}

顺便说一句,您似乎关闭了</a>标签而不打开它。

答案 1 :(得分:0)

如果您使用的是onPush更改检测策略,则不确定,如果这样,您的组件将无法在更改数据时检测到任何更改。你可以尝试

this.datalist = this.datalist.concat(
    {
        title: 'Item 2'

      }
  );

答案 2 :(得分:0)

添加跟踪功能以确保正确计算您的商品:

*ngFor="let list of datalist; trackBy: customTB"
customTB(index, item) {
  return `${index}-${item.id}`; // Add an ID to your items
}