2017-02-20 17 views
1

私はカテゴリのリストを取得するための関数を実行しています。それぞれのカテゴリについて、idを取得し、その特定のカテゴリの 'リンク'の数を取得する別の関数を実行します。そのためにObject.assignの使用を避けるにはどうすればいいですか?

、私は次のコードを持っている:

ngOnInit(): void 
    { 
     this.categories = this.categoryService.getCategories(); 
     const example = this.categories.mergeMap((categor) => categor.map((myCateg) => 
      { 
      this.categoryService.countCategoryLinks(myCateg.id) 
       .map(numlinks => Object.assign(myCateg,{numLinks: numlinks})) 
       .subscribe(valeur => console.log(valeur)); 
      return myCateg.id 
     })); 

     example.subscribe(val => console.log("valeur2: "+val)); 
    } 

getCategories()である:

getCategories(): Observable<any> 
     { 
     return this.category.find({where: {clientId: this.userApi.getCurrentId()}}) 

    }; 

とcountCategoryLinksは()である:

countCategoryLinks(id: number): Observable<any> 
    { 
    return this.category.countLinks(id) 
    }; 

それが表示されます、などを以下のスクリーンショットに示されています。

enter image description here

numlinksはObjectです。もちろんこれはObject.assignによって行われます。

「カウント」をcategoryName ot clientIdの代わりにオブジェクトのように挿入する方法はありますか?

私の目標は、テンプレートのすべての値を表示できるようにすることです:

<tr *ngFor="let category of categories | async; let id = index"> 
        <td> 
         <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-data-table__select" 
           for="row[3]"> 
          <input type="checkbox" id="row[3]" class="mdl-checkbox__input"/> 
         </label> 
        </td> 
        <td class="mdl-data-table__cell--non-numeric"><a [routerLink]="['/category/links']"></a>{{ 
         category.categoryName }} 
        </td> 
        <td class="mdl-data-table__cell--non-numeric">{{category.numLinks}}</td> 
        <td #category.id><i (click)="deleteCategory(id)" class="material-icons">delete</i></td> 
       </tr> 
+0

あなたはあなたがそれを望むように出力のサンプルを与えることができますか? –

+0

「this.category.countLinks(id)」とは何ですか? – Bigdragon

+0

テンプレートコードを追加しました。 –

答えて

2

私はこれを正しく理解していれば、あなたは、単にこれを行うことができます:

.map(numlinks => { 
    myCateg.numLinks = numlinks.count; 
    return myCateg; 
}) 

の代わりに

.map(numlinks => Object.assign(myCateg,{numLinks: numlinks})) 

したがって、あなたのコードは何かになるはずです

.map(numlinks => Object.assign(myCateg,{numLinks: numlinks})) 

{ 
    this.categories = this.categoryService.getCategories(); 

    const example = this.categories 
    .mergeMap((categor) => categor 
     .map((myCateg) => { 

     this.categoryService 
      .countCategoryLinks(myCateg.id) 
      .map(numlinks => { 
      myCateg.numLinks = numlinks.count; 
      return myCateg; 
      }) 
      .subscribe(valeur => console.log(valeur)); 

     return myCateg.id; 
     })); 

    example.subscribe(val => console.log("valeur2: " + val)); 
} 
+0

Shoud私は** mapを書く(numlinks => myCateg.numlinks = numlinks.count)**?これはもはやコンソールに何も表示されません。 –

+0

はい、でも動作しません。 –

+0

@PhilippeCorrègesを編集してください。 –

1

変更この行:このようなグラム

.map(numlinks => Object.assign(myCateg, { numLinks: numlinks.count })) 
+0

"undefined"、テンプレートからの{{category.numLinks}}は表示されません。 –

+0

@PhilippeCorrèges答えを更新しました。再試行する。 – Bigdragon

+0

@PhilippeCorrèges、これは正解と思われますか?あなたが 'numlinks'(countプロパティを持つオブジェクト)を割り当てましたが、' numlinks.count'(数値のみ)を欲しいという問題があなただけでした。 – trincot

関連する問題