ivottable.js-无法访问clickCallback中的类变量

时间:2018-08-15 15:33:17

标签: angular callback pivottable.js

我正在尝试访问数据透视表中回调函数内部的类变量,我正在使用 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内部访问任何类变量 我不知道怎么了。

1 个答案:

答案 0 :(得分:0)

我发现了问题。它与数据透视表无关,实际上是scope问题。 commitmentService在数据透视表回调中不可见。因此,我通过以下操作对其进行了修复:

  1. getPivotDataDetails移动为DialogCommitmentPivotComponent的方法
  2. 现在像这样绑定getPivotDataDetailsclickCallback: this.getPivotDataDetails.bind(this)
相关问题