大家好,我已经使用索引嵌套了ngFor(参见下面的代码)。
<div *ngFor="let category of categoriesWithFoodies; let catIndex = index">
<span>{{catIndex}}</span>
<ul class="foodies-list">
<li *ngFor="let foodie of category.foodies; let foodIndex = index">
<span>{{foodIndex}}</span>
</li>
</ul>
现在食物指数是这样的:
cat 1
食物1 食物2 食物3cat 2
食物1 食物2cat 3
食物1 食物2我需要他们这样:
cat 1
食物1, 食物2, 食物3cat 2
食物4, 食物5cat 3
食物6, 食物7你知道如何实现这个目标吗?
答案 0 :(得分:0)
我认为这是添加angular pipe的理想场所。
所以我不是百分之百,这是最好的实现,但它背后的想法是返回fun main(args: Array<String>) {
foo()
foo { }
foo { println("Bar") }
}
private val EMPTY: (Throwable) -> Unit = {}
fun foo(onError: (Throwable) -> Unit = EMPTY) {
if (onError === EMPTY) {
// the default value is used
} else {
// a lambda was defined - no default value used
}
}
的真实索引,无论你在父循环中的哪个位置。
category.foodies
所以这里我设置一个私有值( import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'realIndex',
})
export class RealIndexPipe implements PipeTransform {
private _lastIdx: number = 0; //store the last index
transform(value: any, idx: number, last: boolean) {
let returnNum: number = 0;
if (last) {
this._lastIdx = this._lastIdx + idx + 1;
returnNum = this._lastIdx;
} else {
returnNum = idx + 1 + this._lastIdx;
}
return returnNum;
}
}
),它将在一个循环中保存最后一个索引值,与父循环无关。因此,如果最后一项具有private _lastIndex
的索引,那么将保持该值3以在下一次迭代中使用。然后在3
条件中,使用新的最后一个索引值加上当前值last
更新索引,再加上_lastIndex
,以考虑索引从{{1}开始}。然后只是将该值返回给视图。
但如果它不是子循环中的最后一个,那么取1
加上当前索引加0
(再次考虑到索引从_lastIndex
开始)。
然后在视图中我们可以将1
添加到0
并为循环值添加管道
last
基于*ngFor
可能还有另一种方法可以根据功能更加理想。