如果用户的搜索查询在我的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 :(得分: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
希望有所帮助。