angular - Prikaži više gumb u ngFor u angular2


Imam popis od preko 50 stavki. Želio bih prikazati samo prvih 10 stavki, i želio bih imati gumb koji, kad se klikne, pokaže sljedećih 10 stavki, a kad se ponovno klikne, sljedećih 10 stavki dok se sve ne prikaže.

<ul class="results-main-content">
  <li class="right-results-section">
    <ul class="_result-list">
      <li class="result" *ngFor="let searchResult of searchResults">
        {{searchResult.name}}
      </li>
    </ul>
  </li>
  <li class="showmore">
    <button class="show-more">
      <img class="more" src="_arrow-down.svg" alt="" />
    </button>
  </li>
</ul>

Je li ovo moguće postići u Angular2?

Ako je tako, molim te prosvijetli mene i zajednicu SO-a.

Hvala

Odgovor #1

Možete koristiti slice pipe:

show = 5;
<li *ngFor="let searchResult of searchResults|slice:0:show let i=index">
  {{searchResult.name}}
  <button *ngIf="i==4 && show == 5" (click)="show = searchResults.length">More</button>
</li>

Plunker primjer

Vidi također

  • Kako prikazati 1 element u ngFor u angular2?

Odgovor #2

Promjenom koda Güntera Zöchbauera to možete postići gledajući ovaj primjer

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
<ul>  
 <li *ngFor="let tag of tags | slice:0:show; let i=index">
  <a href="#" class="span-tag tag">{{ tag }}</a>
 </li>
<div *ngIf="show < tags.length" (click)="increaseShow()">DropDown Button</div>
</ul>
`,
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';

  show = 10;
  tags = ['a','b','c','d','e','f','g','h','i','j','a','b','c','d','e','f','g','h','i','j', 'a','b','c','d','e','f','g','h','i','j','a','b','c','d','e','f','g','h','i','j', 'a','b','c','d','e','f','g','h','i','j'];

  increaseShow() {
   this.show += 10; 
 }
}

primjer stackblitz

Povezani članci