首页 > 解决方案 > Angular - 如何在函数内设置值?

问题描述

我无法设置this.isHiddenColumnAvail值。如何设置这个值?

checkHiddenRowAndColumns(file) {
    const workbook = new Excel.Workbook();
    const arryBuffer = new Response(file).arrayBuffer();
    arryBuffer.then(function (data) {
      workbook.xlsx.load(data)
        .then(function () {
          const worksheet = workbook.getWorksheet(1);

          //check hidden columns
          for(var i=0; i < worksheet.columns.length; i++) {
            if(worksheet.columns[i].hidden == true){
              this.isHiddenColumnAvail = true;
              break;
            }
          }

          //check hidden rows
          worksheet.eachRow(function (row,rowNumber) {
            if(row.hidden == true) {
              this.isHiddenColumnAvail = true;
            }
          });
        });
    });
  }

标签: javascriptangulartypescript

解决方案


很简单,您需要将函数更改为箭头函数。

使用箭头函数,您可以使用this,允许您访问外部/全局变量。

请参见下面的示例:

      worksheet.eachRow((row,rowNumber) => {
        if(row.hidden == true) {
          this.isHiddenColumnAvail = true;
        }
      });

在您的代码中,用箭头函数替换其他函数

观察:

  • es6 或以上版本允许使用箭头函数

参考:


推荐阅读