为什么我不能访问函数?农业网格 Angular 2

Why Can't I acces to function ? ag-grid Angular2

我在 detailCellRendererParams,我正在尝试将函数 checkNumber 访问到模板中,但出现错误 Cannot read property 'checkNumber' of undefined,如果我尝试加入模板,我无法在模板中声明...

this.detailCellRendererParams = {
     detailGridOptions: {},
     checkNumber(data) {
        console.log('into');
        if (!Number.isInteger(data.value)) {
           return 0;
        }
      },    
      template: function(params) {
          let number = 1;
          number =  this.checkNumber(number);
          return ( '<p>' + number + '</p>' );
     }
 };

根据问题,您的代码似乎以错误的格式编写,应该是这样的 -

this.detailCellRendererParams = {
  detailGridOptions: { },
  template: (params) => {
      let number = 1;
      number =  this.checkNumber(number);
      return ( '<p>' + number + '</p>' );
    }
}

checkNumber(data) {
  console.log('into');
  if (!Number.isInteger(data.value)) {
    return 0;
  }
}

CheckNumber 看起来像实用函数,建议你在其他文件中编写函数并将其导出并作为实用函数使用

export function  checkNumber(data) {
            console.log('into');
            if (!Number.isInteger(data.value)) {
              return 0;
            }
          }

然后将此函数直接导入到您使用 ag-grid

的 componet.ts 文件中
import { checkNumber} from '@shared/utility-functions';

     template: function(params) {
               let number = 1;
               number =  checkNumber(number);

使用箭头函数定义 template,如下代码所示。

template: (params) => {
    let number = 1;
    number = this.checkNumber(number);

    return ('<p>' + number + '</p>');
}

您无法在 template 函数中获取 checkNumber 的原因是它无法获取相同的范围。当你像上面那样使用arrow function时,它就可以得到它。