我正在尝试访问数据透视表中回调函数内部的类变量,我正在使用 angular 5 和数据透视表: nicolaskruchten / pivottable
我的代码:
declare var jQuery: any;
@Component({
selector: 'app-dialog-commitment-pivot',
templateUrl: '<div id="pivot"></div>',
styleUrls: ['./dialog-commitment-pivot.component.scss']
})
export class DialogCommitmentPivotComponent implements OnInit {
private el: ElementRef;
constructor(
private commitmentService: CommitmentService,
public dialogRef: MatDialogRef<DialogCommitmentPivotComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
@Inject(ElementRef) el: ElementRef
) {
this.el = el;
}
ngOnInit() {
if (!this.el ||
!this.el.nativeElement ||
!this.el.nativeElement.children) {
console.log('cant build without element');
return;
}
var container = this.el.nativeElement;
var inst = jQuery(container);
var targetElement = inst.find('#pivot');
if (!targetElement) {
console.log('cant find the pivot element');
return;
}
while (targetElement.firstChild) {
targetElement.removeChild(targetElement.firstChild);
}
//render here
targetElement.pivot(this.data.pivotData,
{
rows: ["status"],
cols: ["name"],
rendererOptions: {
table: {
clickCallback: function(e, value, filters, pivotData) {
console.log(e);
console.log(value);
console.log(filters.name);
console.log(pivotData);
this.commitmentService.getPivotDataDetails(filters.name, filters.status)
.subscribe(
res => {
console.log(res);
})
}
}
}
});
}
我收到错误消息:
TypeError:无法读取未定义的属性'getPivotDataDetails'
我无法从clickCallback内部访问任何类变量 我不知道怎么了。
答案 0 :(得分:0)
我发现了问题。它与数据透视表无关,实际上是scope
问题。 commitmentService
在数据透视表回调中不可见。因此,我通过以下操作对其进行了修复:
getPivotDataDetails
移动为DialogCommitmentPivotComponent
的方法getPivotDataDetails
:clickCallback: this.getPivotDataDetails.bind(this)