2017-03-25 20 views
1

我從進料URL獲取項目的列表如下:顯示項目發出

getFeed(){ 
    return Observable.interval(5000) 
     .mergeMap(() => this._http.get(this.feedUrl)) 
     .map(this.extractFeeds) 
     .catch(this.handleError); 
    } 

    private extractFeeds(res: Response): Feed { 
    let feeds = res.json(); 
    return feeds || { }; 
    } 

,這是工作的罰款。現在我想分割這些,這取決於feed[].publishedDate;如果時間是最後的5分鐘內,然後我想組這些進入名單上有:

private latestFeeds: Feed[]; 

如果沒有,那麼組這些到另一個名單上有:

private olderFeeds: Feed[]; 

是什麼最好的辦法呢?在實際的服務中,還是通過在模板中使用*ngIf?我的HTML看起來像這樣:

<div *ngIf="feeds"> 
<div *ngFor="let feed of feeds | slice:0:9"> 
    <div class="row"> 
     <div class="col-md-12"> 
      <div class="search-res well"> 
       <div> 
        <strong>Date Published: </strong> 
        {{feed.publishDate | date:'medium'}} 
       </div> 
       <a href="{{feed.link}}" target="_blank"><h4>{{feed.title}}</h4></a> 
      </div> 
     </div> 
    </div> 
</div> 

我feedComponent.ts如下

constructor(private _feedService:FeedService) { } 

    ngOnInit() { 
    this.getFeed(); 
} 

getFeed() { 
    this._feedService.getFeed() 
    .subscribe(res => { 
     this.feeds = res; 
    }) 
} 

感謝您的幫助和時間

+0

我可能從兩個都開始;在組件中進行拆分,並向模板公開兩個屬性。在這種情況下顯示「最新」字段似乎是一個顯示問題。 – jonrsharpe

+0

Im新角度。你能告訴我一個如何在代碼中執行if/else語句的例子嗎?我還在問題中添加了我的組件 – Johann

回答

0

我解決了這個通過添加以下代碼feed.component.cs

var currentTimeMinus5Minutes = new Date().setMinutes(new Date().getMinutes() - 5); 
    var elementDate = new Date(element.publishDate); 
    if(elementDate.getTime() > currentTimeMinus5Minutes){ 
     this.breakingNewsFeeds.push(element); 
    } 
    else{ 
     this.otherFeeds.push(element); 
    } 

非常感謝您的幫助,尤其是瓊斯哈普,他們指出我的方向是正確的。