0

每当将新对象添加到现有数组中时,我都想打印汽车列表。循环重复,我从头开始打印。我怎样才能避免这种情况?

I tried using async pipe and also track by


// in the service
           getVehicles(){
        obj = { data: [{name: 'car 1'},{name: 'car 2'}] }
            return Observable.interval(2200).map(i=> obj.data.push({name: 'car 3'}));
        }


    // in the controller
    vehicles: Observable<Array<any>>
    ngOnInit() {
        this.vehicles = this._vehicleService.getVehicles().obj.data;
    }


// in template
<div *ngFor='let vehicle of vehicles | async'>
    {{vehicle.name}}
</div>

预计 车 1 车 2 车 3 车 3

但它给了

车一车二车一车二车三车一车二车三车三

4

2 回答 2

0

视图中的重复可能是由脚本错误(访问未定义的某些属性)引起的 - 控制台中没有红色的东西吗?多

无论如何:要添加汽车,您可以

getVehicles() {
   const obj = { data: [{name: 'car 1'},{name: 'car 2'}] };

   return interval(2200).pipe(
      map(() => {
         const data = [...obj.data, { name: 'car 3' }];
         return Object.assign(obj, { data });
      });
   );
}

要阅读它们:

ngOnInit() {
   this.vehicles = this._vehicleService.getVehicles().pipe(
      map(({ data }) => data)
  );
}

于 2019-05-24T09:05:33.153 回答
0

我认为这个解决方案非常糟糕。我希望这是一个练习。我认为的问题是这样的:

  vehicles: Observable<Array<any>>
    getVehicles(){
this.vehicles=[];
obj=null;
        obj = { data: [{name: 'car 1'},{name: 'car 2'}] }
            return Observable.interval(2200).map(i=> obj.data.push({name: 'car 3'}));
        }


    // in the controller

    ngOnInit() {
        this.vehicles = this._vehicleService.getVehicles().obj.data;
    }
于 2019-05-24T07:40:55.667 回答