2016-11-21 26 views
0

如果用戶的搜索查詢在我的Angular2應用程序中找不到任何結果,我試圖打印「未找到結果」消息。我也試圖推遲這種情況的發生,因爲搜索查詢評估本身存在延遲,現在「找不到結果」在屏幕上打印一毫秒,而查詢發生延遲。然後在評估查詢時,「找不到結果」消失,如果沒有找到結果,則會再次出現。所以問題在於,由於在查詢上設置了延遲,過早將信息毫秒印刷到屏幕上。我已經試過包裝功能的超時延遲匹配,就像這樣:在鍵入「未找到結果」之前創建延遲至屏幕

setTimeout(noResultsFound, 2000); 

    noResultsFound(): boolean 
    { 
     if (this.query && !this.hasResults) { 
     return true; 
    } 

而且我認爲代碼是這樣的:

<div *ngIf="inputHasFocus && noResultsFound" class="no-results-found">No Results Found</div> 

但它不工作,而我得到的錯誤消息說「函數聲明我是'setTimeout」。這是你在Typescript中無法做到的事情嗎?有其他選擇嗎?我在這裏錯過了什麼?

回答

0

此代碼:

setTimeout(noResultsFound, 2000); 
noResultsFound(): boolean 

有幾個事情錯:

  • noResultsFound不是全局。它是一個班級成員。因此您需要例如this,例如setTimeout(this.noResultsFound, 2000);
  • 如果你使用this你需要知道它的問題(它是一個JavaScript的東西)。推薦一個箭頭,使noResultsFound(): boolean變成noResultsFound =(): boolean =>。更多:https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html
  • 請勿使用setTimeout進行去除。使用更好的功能方法,例如underscore.debounce

希望有所幫助。

+0

感謝您的反饋意見。因此,暫時忽略延遲問題,此代碼的工作原理如下: public get noResultsFound():boolean if(this.query &&!this.hasResults){ return true; } } 你會如何建議我在這種情況下造成延遲? – Muirik