angular - angular2'de ngFor'da Daha Fazla göster butonu


50'den fazla öğeden oluşan bir listem var. Sadece ilk 10 öğeyi göstermek istiyorum ve tıklandığında sonraki 10 öğeyi gösteren, tekrar tıklandığında sonraki 10 öğeyi gösteren bir butona sahip olmak istiyorum, tümü gösterilene kadar.

<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>

Bunu Angular2'de başarmak mümkün mü?

Eğer öyleyse, lütfen beni ve SO topluluğunu aydınlatın.

Teşekkürler

Cevap #1

Dilme filtresini kullanabilirsiniz:

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 örneği

Ayrıca bakınız

  • Angular2'de ngFor ile 1 öğe nasıl gösterilir?

Cevap #2

Günter Zöchbauer kodunu değiştirerek, bunu bu örneğe bakarak başarabilirsiniz

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; 
 }
}

stackblitz örneği

İlgili makaleler