2017-12-03 5 views
0

で彼らに10を表示::保存変数に値をサブスクライブし、私はこのような検索サービスを持っている時

public getAllData(): Observable<UInfo> { 
return this.http.get<any>('/assets/data/info-data.json'); 
} 

そして、私のcomponent.ts上の私は、この持っている:

public getData(){ 
this.searchService.getAllData().subscribe(results => { 
    this.infoData= results['data']; 
    this.displayData=this.infoData.slice(0,10); 
}); 

を}

Andn私はInitでgetData()を呼び出します。 私がする必要があるのは、一度に10行を表示するためです.10個を追加するには、infoData(0,10)と各スクロールをスライスする必要があります。

onScroll(){ 
     if(this.allInfoData.length < this.infoData.length){ 
    let len=this.allInfoData.length; 
    for(this.i=len;this.i<=len+20;this.i++){ 
    this.allInfoData.push(this.infoData[this.i]); 
    } 
    } 
} 

しかし、事はngOnInit上で、getAllData機能はすでに存在しているすべての行を返します。

これは私が試したものです。

変数にすべてのデータを格納するにはどうすればよいですか?onInitでは10を表示し、その後はすべてのスクロールでさらにデータを追加します。

<div class="col-md-11 tableDiv" infiniteScroll [infiniteScrollDistance]="2" 
    [infiniteScrollThrottle]="100" (scrolled)="onScroll()"> 
<div > 
<table class="table table-striped"> 
    <thead class="table-bordered"> 
    <tr> 
     <th>Date</th> 
     <th>Name</th> 
     <th>Color</th>   
    </tr> 
    </thead> 
    <tbody> 
<tr *ngFor="let row of displayData"> 
     <td>{{row.Date| date:'MM/dd/yy'}} </td> 
     <td>{{row.Name}}</td> 
     <td>{{row.Color}}</td>   
    </tr> 
    </tbody> 
</table> 
</div> 

答えて

0

すべての結果を1つの変数に格納し、表示された結果を別の変数に格納することができます。あなたは

onScroll(){ 
    let currentLength = this.displayData.length; 

    // you probably want some more logic here to determine if the user is near the bottom of the results 
    if(currentLength < this.infoData.length){ 
     this.displayData = this.infoData.slice(0, currentLength + 10); 
    } 
} 
+0

ありがとう表示したいものを自分のonScroll方法のスライスで次に

this.searchService.getAllData().subscribe(results => { this.infoData = results['data']; // store all data this.displayData = this.infoData.slice(0,10); // store display data }); 

!そのロジックはngx-infinite scrollによって実装されていますが、簡単な質問です。 ここでは、表示データは0〜10、次に0〜20、0〜30です。 この機能では、スライスされた初期オブジェクトに+10と+10を付加することしか考えていませんでした。 –

+0

@ArEmil '10-20'、' 20-30'などをスライスして表示データに追加します。 'newItems = this.infoData.slice(currentLength、currentLength + 10); this.displayData.push(... newItems); ' – LLai

+0

ありがとうございます。 displayDataを出力するときにonScroll関数を呼び出すとコンソールログにプッシュしてログを記録しますが、これらの値はプッシュされます。 しかし、彼らはテーブルに追加されません。 * ngFor = "displayDataのデータを受け取ります" プッシュ時にデータが表示されないので、テーブルに表示する必要がありますか? –

関連する問題