为什么我无法访问功能? ag-grid Angular2

时间:2018-05-18 07:08:51

标签: angular ag-grid

我在详细说明CellRendererParams,我正在尝试将函数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>' );
     }
 };

3 个答案:

答案 0 :(得分:1)

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

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;
  }
}

答案 1 :(得分: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);

答案 2 :(得分:0)

使用template定义的箭头功能,如下面的代码所示。

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

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

您无法在checkNumber函数内获取template的原因是它无法获得相同的范围。当您使用上述arrow function时,它将能够获得它。