在订阅angular2之前重置数组

时间:2017-04-17 13:19:23

标签: angular typescript angular2-routing angular2-template

我正在尝试在快速会话中使用多个过滤器我将数据中的先前数据与新数据一起获取。如何删除以前的数据。

component.ts

ngOnInit() {
  this.vehicleAttribute = JSON.parse(sessionStorage.getItem('vehicleAttributes'));
  const data: ProductCatalogPostData = {
    vehicleModelAttributes: this.vehicleAttribute.vehicleModels[0].modelAttributes,
    role: 'vehicle owner',
    planType: this.planType
  };
  const page: ProductCatalogPostPagination = {
    page: this.pageNo
  };
  this.productCatalogService.compatibleProducts(data, page.page).subscribe(
    response => {
      for (let i = 0; i < response.products.length; i++) {
        this.lists.push(response.products[i]);
      }
      this.pageCount = response.totalCount;
    },
    error => {
      console.log(error);
    }
  );
}

关于过滤器功能我正在尝试使列表为空

onSelectedChange($event) {
  this.lists = [];
  this.planType = $event[0]
  this.ngOnInit();
}

但我仍然是以前的订阅数据以及新数据。任何输入都非常受欢迎

2 个答案:

答案 0 :(得分:0)

您可以使用执行操作符来实现

this.productCatalogService.compatibleProducts(data, page.page)
  .do(data => {
       if(isEmpty(data)) {
          this.lists= new Array();
       }
   })
  .subscribe(response => {
      for (let i = 0; i < response.products.length; i++) {
        this.lists.push(response.products[i]);
      }
      this.pageCount = response.totalCount;
    },error => {
      console.log(error);
    });

答案 1 :(得分:0)

我不明白为什么你要迭代,为什么不是

this.list = response.products

但是如果你有理由不这样做那么你可以通过

复制元素
this.list = [].concat(response.products)
如果你出于某种原因不想清理

,那么所有人都会立即将它们全部推开
this.list.push(...response.products)

最后一个将等于:

Array.prototype.push.apply(this.list, response.products)