角度检测是否打开了弹出窗口

时间:2018-09-28 14:21:14

标签: angular typescript typescript1.4

在我的董事会(用Angular 4编写)中,对话框如下打开:

导入已激活的路由,路由器

import { ActivatedRoute, Router } from '@angular/router';

在构造函数中添加路由器和ActivatedRoute引用

constructor ( ... private _router: Router, private _activatedRoute: ActivatedRoute, ...)

并按以下方式使用

this._router.navigate(['./', { outlets: { somemodal: 'somemodal', dialogs: null }, relativeTo: this._activatedRoute }]);

要求是,当您按下转义键 Esc 时,它应显示删除模式(已实施且正在运行的其他模式)。

但是质量检查人员提出了一个问题 ,例如当出现其他弹出窗口(如扫描的检查图像/重新扫描弹出窗口/客户ID弹出窗口/错误消息弹出窗口)时, kbd> Esc 这些弹出窗口应先关闭。

如果没有其他弹出窗口,则仅打开“删除”模式,目前不存在。在命中 Esc 时,它仍会打开删除弹出窗口。

问题:如何检测是否存在其他弹出窗口。

注意:在开发的最初阶段,在某些共享服务中,我们可能已经创建了isPopupOpened: boolean = true之类的标志,并且在关闭同一弹出窗口时应将其转到{{1} }。但这尚未实现,并且已实现了几种模式,这些模式在我的董事会的不同阶段均已打开。用户可能会在任何时间点按下 Esc 。所以我想如何解决相同的问题。

2 个答案:

答案 0 :(得分:0)

我找到了解决方法。

this.ctx.scale(0.1, 0.1);
const imgData = this.ctx.getImageData(0, 0, 28, 28);
console.log(imgData);

只需检查URL中是否存在任何对话框或子对话框。它对我有用。

答案 1 :(得分:-1)

您可能需要维护共享服务中每个弹出窗口的状态。根据状态值,您需要处理弹出显示/关闭,然后用户按ESC按钮。要处理键盘事件,可以使用指令,并且可以在Constructor中注入共享服务以更新状态。