angular - 订阅者在Angular中接收数据时如何关闭模式
问题描述
我正在使用 ngx-bootstrap 模态,我想在调用异步 REST 服务时也将其用作加载模态。所以我在调用服务之前打开它,我想在收到响应时关闭它。
示例:
this.loadingModalRef = this.modalService.show(LoadingModalComponent,{initialState, keyboard: false, backdrop: 'static' });
this.myService.searchClient(data).subscribe(
res => {
this.loadingModalRef.hide()
}
);
在那种情况下,模态不会关闭,但我不明白为什么。我必须使用延迟来关闭它,以这种方式
setTimeout(() => {
this.loadingModalRef.hide();
}, 200);
但是,当我还想在收到响应时导航到另一个位置时,我遇到了问题。在这种情况下,模态不会关闭,不可见,但仍附加到 DOM 中的 body 元素,用户无法再与界面交互。
使用超时关闭模态是否正确?我该如何解决我的问题?
解决方案
当使用 setTimeoutthis
上下文等于window
所以你应该使用bind
setTimeout(() => {
this.loadingModalRef.hide();
}, 200).bind(this)
在第一个代码中,这应该可以工作:
const loadingModalRef = this.modalService;
loadingModalRef.show(LoadingModalComponent,{initialState, keyboard: false, backdrop: 'static' });
this.myService.searchClient(data).subscribe(
res => {
loadingModalRef.hide()
}
);
推荐阅读
- node.js - Rails 6 - 我的应用程序中的 node_modules 文件夹是什么?
- reactjs - React:如何打开卡片的特定编辑/删除窗口?
- javascript - 无法离开会话,本地媒体已在 Safari 中停止 - IceLink 3
- python - TensorFlow Serving 返回 400 Bad Request 错误
- python - 如何根据升序值过滤列表?
- python - 我安装了 python 3.9.1 但无法打开 jupyter notebook 或 jupyterlab
- sql - 在 Hive 中,有没有办法在同一个 XML 系列中解析多次出现的同一个标签?
- apache-ranger - Presto 和 Apache Ranger 的行级安全性
- sql - 当一列有多个值时,如何查找缺少的特定值?
- php - Braintree 集成错误:检测到 3DS 1.0 表单 POST 到 3DS 2.0 端点