【发布时间】:2020-06-05 15:01:37
【问题描述】:
我有一个带有 NgxSpinner 的 Angular 8 网络应用程序。当一些冗长的过程正在进行时,我使用它来阻止 UI,以防止用户在某些部分尚未完全加载时与复杂的表单进行交互。
问题是如果某个进程调用hide,NgxSpinner 会立即隐藏自己,无论是否还有另一个进程具有自己的show/hide 调用对运行。因此,当任何较短的进程完成并调用spinner.hide() 时,该网页过早解除阻塞。
这是Stackblitz 示例。
如何让 NgxSpinner 等待最后一个 hide 匹配所有 show 调用?
附:这似乎是我尝试过的许多 UI 块库的问题 - 它们只是不考虑多次调用 show/hide 的并行进程。
【问题讨论】:
-
我认为,您可以在服务中添加一个计数器,在每个进程调用时递增,并在完成时递减。一旦它为零,您就可以调用 spinner.hide() 方法。希望你明白。我无法访问 Stackblitz 页面。
-
@akpgp 谢谢,它提供了关于引用计数实现的想法。我希望有一些内置的 UI 阻止程序,但显然没有,我必须将 NgxSpinner 包装在我自己的引用计数服务中。
标签: angular ngx-spinner