Как добавить значения с тем же именем в angular8, используя rxjs? - PullRequest
1 голос
/ 10 октября 2019

HTML-код: здесь я вызываю килограммы, такие как 10 кг или 20 кг и т. Д. Я хотел бы добавить значения, которые имеют то же имя, что и параметр. этот код не работает для меня.


<p>Total Materials</p>

  <div class="add-div">
    <div *ngFor="let item of allMaterials">
           <div class="file-name">
     <div>{{item.title}}</div>
     <div>{{item.wt_in_kgs_per_unit}}{{item.uom}}</div> 
    </div>
  </div>
</div>

component.ts:


 updateMaterials(){
    this.allMaterials = []
    this.materialList.map((item : any) => {
      this.allMaterials =[...this.allMaterials, ...item]});
      console.log(this.allMaterials);

  => from this line the code is not working...
   const x = from(this.allMaterials).pipe(map(data => {
        data.groupBy((x:any) => x.title)
        .flatMap(group => {
        return group.reduce((acc,currentValue)=>{
          acc.wt_in_kgs_per_unit = acc.wt_in_kgs_per_unit + currentValue.wt_in_kgs_per_unit;
          return acc;
        })
      })
    .subscribe(d => this.groupedData = d);
      })   
      )

      console.log(x)
      console.log(this.allMaterials);

1 Ответ

0 голосов
/ 11 октября 2019
this.allMaterials = []
    this.materialList.map((item : any) => {
      this.allMaterials =[...this.allMaterials, ...item]});
      console.log(this.allMaterials);

это ваш способ копирования массива materialList в allMaterials? Это довольно неэффективный способ, когда вы можете просто использовать

this.allMaterials = [...this.materialList];

Следующий беспорядок выглядит как странная попытка использовать rxjs для группировки чего-то, что уже является массивом. Что вы ожидаете от х? Подписка?

Вы можете попробовать

from(this.allMaterials).pipe(
  groupBy((x:any) => x.title),
  map(group => group.reduce((acc,currentValue)=> {
      acc.wt_in_kgs_per_unit = acc.wt_in_kgs_per_unit + currentValue.wt_in_kgs_per_unit;
      return acc;
    }))

Но я бы просто работал с массивом за пределами rxjs.

...