Angular 4 - 条件 *ngFor 显示每第三个元素

标签 angular loops ngfor

我有一个 ngFor 循环,我希望它只迭代数组中的每个第三个元素,就像我期望下面的代码一样:

for(let i=0; i<array.length; i=i+3)...

我当前的 ngFor 代码如下所示:

<md-card class="cardContainer" *ngFor="let viz of visualisationList; let i = index">
    <md-card-header>
        <md-card-title>{{ viz['Title'] }}</md-card-title>
        <md-card-subtitle>Datasets: {{ viz['Datasets'] }}</md-card-subtitle>
    </md-card-header>
</md-card>

有没有一种简单的方法可以在 ngFor 循环中做到这一点?我可以在 ngInit() 中使用 typescript 预先过滤成 3 个数组,或者我可以使用 ngIf 和模函数,但我希望我可以直接在 ngFor 循环中执行此操作。

最佳答案

我认为最简单、最干净的方法是使用 Array.filter 和这样的 getter 来过滤组件逻辑中的数组:

public get filteredArray() {
    return this.array.filter((value, index) => index % 3 === 0);
}

并将过滤后的数组用于您的 ngFor

注意:如果您的数组被装饰为输入,则它可能是未定义,您应该使用空数组对其进行初始化,或者在 getter 内部检查它之前是否未定义使用filter方法。

关于Angular 4 - 条件 *ngFor 显示每第三个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064327/

相关文章:

javascript - 从 angular2 构建的新 Cordova 在 android 上构建白屏

angular - 用于 Firebase 身份验证 RxJ 的嵌套 exhausMap 和 concatMap

angular2-template-loader 无法内联组件模板

java - ImageJ JavaScript,如何循环浏览目录?

mysql - 在 ngFor 循环内使用 ngIf 条件实现类似 Angular 的按钮

javascript - 在 Angular 5 *nfFor 中为循环的每次迭代设置 bool 值

angular - 在应用加载时强制重定向到特定页面

javascript - 如何以编程方式比较两个不同数组中的所有元素

python - 设置循环条件

javascript - Angular 7隐藏ngFor循环内的特定属性