javascript - 嵌套 event.subscribe 解决方案
问题描述
我正在使用 Angular dragula 拖放,它允许我在视图周围移动引导卡。当您“放下”某个项目时,它会触发 this.dragulaService.drop.subscribe(),在其中我可以在移动完成之前取消或回滚拖动的项目。
我想在那里使用我的模态。看起来像这样:让订阅 = this.modalService.onSubmit.subscribe((val) => {
该模态订阅保持线程等待用户在模态中单击“确定”或“取消”,其中显示“您确定要移动此项目吗?”
问题是,水獭事件订阅(dragula)不等待模式事件订阅完成,dragula 只是在模式确认之前结束,这对我来说是个问题。因为当我尝试调用 drake.cancel 时,它不再存在。
代码 :
this.dragulaService.drop.subscribe(
value => {
let modal: ModalComponent = this.modalService.GetModal();
let subscription = this.modalService.onSubmit.subscribe((val) => {
//Here if user clicks OK, we do nothing and drag-drop finish successfuly
//If user clicks Cancel, we call this.dragulaService.find('bag-deals').drake.cancel(true);
解决方案
您可以在管道中使用 concatMap,这是一篇关于高阶 RxJS 映射运算符的有趣文章
我以这种方式在您的情况下使用它:
let dropValue;
this.dragulaService.drop
.pipe(concatMap(value => {
dropValue = value;
const modal: ModalComponent = this.modalService.GetModal();
return this.modalService.onSubmit;
})).subscribe(value => {
//Here if user clicks OK, we do nothing and drag-drop finish successfuly
//If user clicks Cancel, we call this.dragulaService.find('bag-deals').drake.cancel(true);
});
推荐阅读
- python - 如何在这个硒测试中制作一个循环
- python - 代码在一台电脑上运行,但不能在另一台电脑上使用相同版本的 python 运行:python 配置问题?
- python - 使用 Firebase 创建桌面 Python 应用程序,如何包含私钥?
- java - 谷歌地图链接无法从 Android 应用上的 webView 打开
- react-native - React Navigation:堆栈导航器屏幕未显示后退按钮
- typescript - 子一个函数的参数的可选性取决于其他函数打字稿的参数的可选性
- oracle - PL/SQL 记录。我可以输入几个值吗?
- android - findViewById 在警报对话框小部件上使用时抛出空异常
- graph - LSTM 的正确输入是什么?
- amazon-dynamodb - 具有嵌套查询的 DynamoDB GetBatch 操作