Angular7“此”未定义

时间:2019-06-30 22:12:14

标签: angular typescript

我将自定义确认对话框导入到函数中,除了对话框函数之外,“ this”都未定义。

这是功能:

onDelete(CTId) {
    this.confirmDialogService.confirmThis( 
      "Confirm Delete",
      function() {
          this.service.deleteContactDetail(CTId).subscribe(
          res => {
            this.service.refreshList();
            this.toastr.warning("Deleted Successfully", "Contact Details");
          },
          err => {
            console.log(err);
            this.toastr.error("Failed to Delete");
          }
        );
      },
      function() {
        console.log("closed dialog");
      }
    );
  }

对于confirmDialogService,它的定义类似于this: this,其他地方都是any

1 个答案:

答案 0 :(得分:2)

首选使用箭头功能。

例如:

function(arg) {
   ...
}

成为:

(arg) => {
   ...
}

箭头函数将从调用方方法继承范围。所以this会是一样的。

您的代码应如下所示:

onDelete(CTId) {
  this.confirmDialogService.confirmThis( 
    "Confirm Delete",
    () => {
      this.service.deleteContactDetail(CTId).subscribe(
        res => {
          this.service.refreshList();
          this.toastr.warning("Deleted Successfully", "Contact Details");
        },
        err => {
          console.log(err);
          this.toastr.error("Failed to Delete");
        }
      );
    },
    () => console.log("closed dialog")
  );
}

您可以阅读有关arrow functions的信息: