在屏幕上键入“未找到结果”之前创建延迟

时间:2016-11-21 03:03:24

标签: angular typescript

如果用户的搜索查询在我的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中做不到的事吗?还有其他选择吗?我在这里缺少什么?

1 个答案:

答案 0 :(得分: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

希望有所帮助。