传单on(“ click”,function())动作后,打开“角度材料”对话框

时间:2020-02-21 18:00:26

标签: angular angular-material leaflet ngx-leaflet

当我单击小叶圆时,我想打开一个“角度材料”对话框。 对话框出现,但行为异常。当我使用常规的Button(单击)事件打开对话框时,不会出现这种奇怪的行为。

Strange behavior

我尝试这样调用该函数。我将onClickCircles函数绑定到我的圈子。

let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on(
          "click",
          this.onClickCircles.bind(this)
        );

当按下圆圈时,我打开对话框

onClickCircles(e) {
    const dialogRef = this.dialog.open(MarkerdetailComponent, {
      width: "300px",
      data: { event: e, collection: "circles" }
    });
    dialogRef.afterClosed().subscribe(result => {
      console.log("closed")
    });
    //this.deleteCircles(e.target);
  }

从其他任何地方调用onClickCircle(e)时,都可以正常工作。我猜是因为.bind(this)再次实例化了我的组件,并且在对话框显示正确之前它不必加载整个组件。但是我不确定这一点,也不知道是否可以解决。

1 个答案:

答案 0 :(得分:1)

发生此错误是因为click函数内部的代码未在Angular上下文中执行。可以使用NgZone进行修复。

let line = L.circle(latlngEx, { radius: this.circles[i].radius }).on(
          "click",
          e => {
            this.zone.run(() => {
              this.onClickCircles(e)
              })
          }
        );