问题描述
嗨,我这里有一个数字列表,如
array = [1,2,3,4,5,6,7,8,9,10]
@H_404_5@<div *ngFor =" let data of array"> <p>{{data}}</p> </div>
@H_404_5@所以在这里我不想显示所有数字,而是想显示在1,3 .... 8,10(包括点)上
在这里我遵循了这种技术,但是对于前3个数字和点,我该怎么做?说我需要显示前3个数字和后3个数字,而与数字无关
<li *ngFor="let project of (projects | slice:projects.length - 4);">
@H_404_5@注意:由于无法获取嵌套数组中的数据,因此无法在.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)">