我正在运行一个函数来获取类别列表,并为每个类别获取一个id并运行另一个函数来获取该特定类别中我已获得id的“链接”数量。
为此,我有以下代码:
getCategories(): Observable<any>
{
return this.category.find({where: {clientId: this.userApi.getCurrentId()}})
};
其中getCategories()是:
countCategoryLinks(id: number): Observable<any>
{
return this.category.countLinks(id)
};
和countCategoryLinks()是:
<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>
看来,如下面的屏幕截图所示:
numlinks是一个Object。当然这是由Object.assign完成的。
有没有办法像 categoryName ot clientId而不是Object一样插入“count”?
我的目标是能够在模板中显示所有值:
{{1}}
答案 0 :(得分:2)
如果我理解正确,那么你可以这样做:
.map(numlinks => {
myCateg.numLinks = numlinks.count;
return myCateg;
})
而不是
.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));
}
答案 1 :(得分:1)
更改此行:
.map(numlinks => Object.assign(myCateg,{numLinks: numlinks}))
为:
.map(numlinks => Object.assign(myCateg, { numLinks: numlinks.count }))