Angular 如何将ngFor REPECT限制为角度中的某些项目数?

Angular 如何将ngFor REPECT限制为角度中的某些项目数?,angular,Angular,我的代码: {{item.text} 我试图在任何时候只显示10个列表元素。正如中所建议的,我使用了ngIf,但这会导致页面上出现空列表项(超过10个)。这对我来说似乎更简单 {{item.text} 更接近你的方法 {{item.text} 这非常有效: <template *ngFor="let item of items; let i=index" > <ion-slide *ngIf="i<5" > <img [src]="item.I

我的代码:


{{item.text}


我试图在任何时候只显示10个列表元素。正如中所建议的,我使用了ngIf,但这会导致页面上出现空列表项(超过10个)。

这对我来说似乎更简单

{{item.text}
更接近你的方法


  • {{item.text}
  • 这非常有效:

    <template *ngFor="let item of items; let i=index" >
     <ion-slide *ngIf="i<5" >
      <img [src]="item.ItemPic">
     </ion-slide>
    </template>
    

    除了@Gunter的答案,您还可以使用trackBy来提高性能。trackBy接受一个有两个参数的函数:index和item。可以从函数返回对象中的唯一值。它将停止重新呈现ngFor中已显示的项目。在html中添加trackBy,如下所示

    <li *ngFor="let item of list; trackBy: trackByFn;let i=index" class="dropdown-item" (click)="onClick(item)">
      <template [ngIf]="i<11">{{item.text}}</template>
    </li>
    

    您可以直接将
    slice()
    应用于变量

    
    {{item.text}
    
    
    html css
    例如,假设我们只想显示数组的前10项,我们可以使用切片管这样做:

    <ul>
         <li *ngFor="let item of items | slice:0:10">
          {{ item }}
         </li>
    </ul>
    
      {{item}}

    第二种方法为用户界面提供了更好的灵活性。i、 e.*ngIf=“i<11 | | showAll”您好,假设数组有12个项目,我们切片3个。。。如何获取剩余部分,以便它可以显示在其他地方(例如,在一个按钮中:左9项)
    slice:0:10
    是否影响原始数组???
    slice
    返回一个副本,而不影响原始数组
    ;slice:0:10
    管道,很好,它帮助我构建了一个带有“查看更多”的列表增加
    切片的第二个参数的按钮。
    
    <li *ngFor="let item of list.slice(0, 10);">
       {{item.text}}
    </li>
    
    <table class="table border">
        <thead>
            <tr>
                <ng-container *ngFor="let column of columns; let i = index">
                    <th>{{ column }}</th>
                </ng-container>
            </tr>
        </thead>
        <tbody>
            <tr *ngFor="let row of groups;let i = index">
                <td>{{row.name}}</td>
                <td>{{row.items}}</td>
                <td >
                    <span class="status" *ngFor="let item of row.Status | slice:0:2;let j = index">
                        {{item.name}}
                       </span><span *ngIf = "i < 2" class="dots" (mouseenter) ="onHover(i)" (mouseleave) ="onHover(-1)">.....</span> <span [hidden] ="test" *ngIf = "i == hoverIndex" class="hover-details"><span  *ngFor="let item of row.Status;let j = index">
                        {{item.name}}
                       </span></span>
               </td>
    
            </tr>
      </tbody>
    </table>
    
    <p *ngFor="let group of usersg"><input type="checkbox" [checked]="isChecked(group.id)" value="{{group.id}}" />{{group.name}}</p>
    
    <p><select [(ngModel)]="usersr_selected.id">
       <option *ngFor="let role of usersr" value="{{role.id}}">{{role.name}}</option> 
    </select></p>
    
    import { Component, OnInit } from '@angular/core';
    import { CommonserviceService } from './../utilities/services/commonservice.service';
    import { FormBuilder, FormGroup, Validators } from '@angular/forms';
    @Component({
      selector: 'app-home',
      templateUrl: './home.component.html',
      styleUrls: ['./home.component.css']
    })
    export class HomeComponent implements OnInit {
      getListData: any;
     dataGroup: FormGroup;
     selectedGroups: string[];
        submitted = false;
        usersg_checked:any;
        usersr_selected:any;
        dotsh:any;
        hoverIndex:number = -1;
        groups:any;
        test:any;
     constructor(private formBuilder: FormBuilder) {
    
    
         }
         onHover(i:number){
     this.hoverIndex = i;
    }
         columns = ["name", "Items","status"];
    
    public usersr = [{
        "id": 1,
        "name": "test1"
    
    }, {
        "id": 2,
        "name": "test2",
    
    }];
    
    
      ngOnInit() {
          this.test = false;
          this.groups=[{
            "id": 1,
            "name": "pencils",
            "items": "red pencil",
            "Status": [{
                "id": 1,
                "name": "green"
            }, {
                "id": 2,
                "name": "red"
            }, {
                "id": 3,
                "name": "yellow"
            }],
            "loc": [{
                "id": 1,
                "name": "loc 1"
            }, {
                "id": 2,
                "name": "loc 2"
            }, {
                "id": 3,
                "name": "loc 3"
            }]
        },
        {
            "id": 2,
            "name": "rubbers",
            "items": "big rubber",
            "Status": [{
                "id": 1,
                "name": "green"
            }, {
                "id": 2,
                "name": "red"
            }],
            "loc": [{
                "id": 1,
                "name": "loc 2"
            }, {
                "id": 2,
                "name": "loc 3"
            }]
        },
        {
            "id": 3,
            "name": "rubbers1",
            "items": "big rubber1",
            "Status": [{
                "id": 1,
                "name": "green"
            }],
            "loc": [{
                "id": 1,
                "name": "loc 2"
            }, {
                "id": 2,
                "name": "loc 3"
            }]
        }
    
    ];
    
          this.dotsh = false;
    
          console.log(this.groups.length);
    
    this.usersg_checked = [{
        "id": 1,
        "name": "test1"
    
    }, {
        "id": 2,
        "name": "test2",
    
    }];
    
     this.usersr_selected = {"id":1,"name":"test2"};;
    
    this.selectedGroups = [];
    this.dataGroup = this.formBuilder.group({
                email: ['', Validators.required]
    });
      }
    
      isChecked(id) {
       console.log(this.usersg_checked);
      return this.usersg_checked.some(item => item.id === id);
    }
     get f() { return this.dataGroup.controls; }
    onCheckChange(event) {
      if (event.target.checked) {
     this.selectedGroups.push(event.target.value);
    } else {
     const index = this.selectedGroups.findIndex(item => item === event.target.value);
     if (index !== -1) {
      this.selectedGroups.splice(index, 1);
    }
    }
    }
    
       getFormData(value){
          this.submitted = true;
    
            // stop here if form is invalid
            if (this.dataGroup.invalid) {
                return;
            }
          value['groups'] = this.selectedGroups;
          console.log(value);
      }
    
    
    }
    
    .status{
        border: 1px solid;
        border-radius: 4px;
        padding: 0px 10px;
        margin-right: 10px;
    }
    .hover-details{
        position: absolute;
    
    
        border: 1px solid;
        padding: 10px;
        width: 164px;
        text-align: left;
        border-radius: 4px;
    }
    .dots{
        position:relative;
    }
    
    <ul>
         <li *ngFor="let item of items | slice:0:10">
          {{ item }}
         </li>
    </ul>
    
     <div *ngFor="let item of list;trackBy: trackByFunc" >
       {{item.value}}
     </div>
    
     trackByFunc(index, item){
        return item ? item.id : undefined;
      }