Angular 制表器单元格单击:如何在单元格单击和使用组件元素时以角度调用函数

Angular 制表器单元格单击:如何在单元格单击和使用组件元素时以角度调用函数,angular,angular-material,angular7,tabulator,Angular,Angular Material,Angular7,Tabulator,我正在尝试使用制表器来处理angular 7中的表格。我试图在单元格单击时调用函数,以便该函数打开一个对话框并显示行信息。然而,问题是当我试图访问被调用函数中的任何组件变量dialog:MatDialog时,它是未定义的。调试时,我发现该函数是在制表器内部调用的,而不是在角度组件中调用的。是否有方法调用函数中的函数并访问函数中的组件变量 export class ExampleTableComponent implements OnInit { exampleTable: Tabulator;

我正在尝试使用制表器来处理angular 7中的表格。我试图在单元格单击时调用函数,以便该函数打开一个对话框并显示行信息。然而,问题是当我试图访问被调用函数中的任何组件变量dialog:MatDialog时,它是未定义的。调试时,我发现该函数是在制表器内部调用的,而不是在角度组件中调用的。是否有方法调用函数中的函数并访问函数中的组件变量


export class ExampleTableComponent implements OnInit {
exampleTable: Tabulator;

 constructor(private dialog: MatDialog) { }

ngOnInit() {

    this.exampleTable = new Tabulator("#ex-table-div",{
      height : 300,
      data: this.example_data,
      layout: "fitColumns",
      columns: [
        { formatter:"rownum", align:"center", width:40},
        { formatter: this.printIcon, width:40, align:"center", 
         cellClick: this.openDialog
        },
        .......
      ],
      ......
    });
}


openDialog(e, cell){

    const dialogConfig = new MatDialogConfig();

          dialogConfig.disableClose = true;
          dialogConfig.autoFocus = true;

          this.dialog.open(DetailsComponent, {      
            width: '300px',
          });

     ..........
  }
......
}
ES6引入lambda,也称为arrow函数。主要的区别在于这一点的范围

函数:this的作用域=调用方制表器 lambda:this=classe的范围,其中lambda是ExampleTableComponent 使用cellClick:this.openDialog.bindthis可以不使用ES6语法,但我个人更喜欢lambda

ES6引入lambda,也称为arrow函数。主要的区别在于这一点的范围

函数:this的作用域=调用方制表器 lambda:this=classe的范围,其中lambda是ExampleTableComponent 使用cellClick:this.openDialog.bindthis可以不使用ES6语法,但我个人更喜欢lambda


我也有这个问题。我是这样解决的:

cellClick: (e, row)=> this.openDialog(e, row)

我也有这个问题。我是这样解决的:

cellClick: (e, row)=> this.openDialog(e, row)

你试过兰达吗?cellClick:=>这个。openDialog@Gilsdav:成功了!请解释一下你是如何找到修复的?谢谢你要不要试试拉姆达?cellClick:=>这个。openDialog@Gilsdav:成功了!请解释一下你是如何找到修复的?谢谢你!谢谢你的解释。使用lamda函数,我还能够传递事件和单元格参数,如cellClick:e,row=>this.openDialoge,row。谢谢,太好了!谢谢你的解释。使用lamda函数,我还能够传递事件和单元格参数,如cellClick:e,row=>this.openDialoge,row。谢谢。请不要将“谢谢”添加为答案。在这个网站上投入一些时间,你会得到足够多的你喜欢的答案,这是表示感谢的堆栈溢出方式。请不要添加感谢作为答案。在网站上投入一些时间,你将获得足够的投票结果,这是表示感谢的堆栈溢出方式。