如何在Angular的ngFor循环中显示前3个数字和后3个数字

问题描述

嗨,我这里有一个数字列表,如

array = [1,2,3,4,5,6,7,8,9,10]

所以在这里使用* ngFor我将显示如下所示

<div *ngFor =" let data of array">
    <p>{{data}}</p>
  </div>

所以在这里我不想显示所有数字,而是想显示在1,3 .... 8,10(包括点)上

在这里我遵循了这种技术,但是对于前3个数字和点,我该怎么做?说我需要显示前3个数字和后3个数字,而与数字无关

<li *ngFor="let project of (projects | slice:projects.length - 4);">

注意:由于无法获取嵌套数组中的数据,因此无法在.ts代码中进行更改,因此我需要模板.html级

解决方法

您可以过滤数组,并防止较小的数组出现重复项。

const
    array = [1,2,3,4,5,6,7,8,9,10];

for (const value of array.filter((_,i,{ length }) => i < 3 || i + 3 >= length)) {
    console.log(value);
}

,

一种快速的方法就是这样做

<div *ngFor =" let data of array; let i = index">
    <p *ngIf="i< 3 || i > array.length - 4 ">{{data}}</p>
  </div>
,

您可以通过创建包含您的逻辑的自定义管道来进行尝试。

import {Pipe,PipeTransform} from '@angular/core';
@Pipe({
    name: 'arrayfilter',pure: true
})

export class ArrayFilterPipe implements PipeTransform {
    transform(itemsArray: any,args?:any): any {
        if(itemsArray.length > 1) {
           return itemsArray.filter((_,{length}) =>  
           (i < 3 || i + 3 >= length));
        }
    }
}

HTML文件如下所示

<div *ngFor =" let data of sample_array | arrayfilter">
    <p>{{data}}</p>
  </div>

希望这对您有所帮助。

,
    <tr *ngFor="let dc of (drdInfo.companyList['data'] | slice:drdInfo.companyList['data'].length - 4)"> 

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...