代码之家  ›  专栏  ›  技术社区  ›  Joniras

当调用传单标记的onclick时,“材料”对话框会被卡住。

  •  11
  • Joniras  · 技术社区  · 6 年前

    我有一个项目,我有一个地图(使用 ngx-leaflet )
    点击 在标记上,我想显示来自 Angular Material

    对话框将打开,但当我单击“关闭”按钮时,它将再次打开,然后关闭。

    我的尝试:

    • 用超时延迟对话框
    • 触发打开对话框的主题
    • 删除和创建新对话框
    • 在NGX传单和角材料问题中寻找这个错误

    我发现:

    • 所有生命周期钩子都是在发生某些事情之后触发的(单击、背后的JS事件等)
    • 这个对话框可以简单到我想要的程度,它不会改变任何东西。
    • 当我再次打开对话框时,它被关闭(在 关闭后 对话框)正常工作

    示例代码的进一步说明:

    • 在app.component.ts中,我将事件处理程序绑定到每个标记,然后在另一个函数中打开对话框。
    • 代码是 this project i found on the net (仅更新依赖项)

    演示

    我在这里做了一个演示: Example Project .

    1 回复  |  直到 6 年前
        1
  •  7
  •   Jscti    6 年前

    原因是你在“角度世界”之外触发了模态的打开,因为它与 click 谷歌地图标记上的事件。然后就是这些类型的不一致。

    2种解决方案:

    • 使用 agm-map 将使谷歌地图API成角度的lib
    • 继续直接使用google map apis,但添加ngzone明确地告诉您要在角度世界内部执行一些代码:

    m.addEventListener("click", ()=> { this.zone.run(() => {this.openExampleDialog();}) })

    工作 fiddle here

    推荐文章