我将自定义确认对话框导入到函数中,除了对话框函数之外,“ 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
答案 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
的信息: