无法使用'this'关键字在forEach回调中访问Angular方法

时间:2018-08-26 09:13:24

标签: angular typescript

我无法在forEach()回调函数中访问angular方法。 我尝试使用箭头功能,也尝试使用bind(this)。但它不起作用。

app.component.ts

formatServerData(data) {

  var formatedData = data.map(function(el) {
    var temp = {
      title: el.title,
      children: [],
      isDirectory: true
    }
    Object.keys(el).forEach((key) => {
      if (key != 'title') {
        if (typeof el[key] == 'object') {
          var folder = this.createFolder(el[key], key);
          temp.children.push(folder);
        }
      }
    }, this)
    return formatedData;
  })
}

createFolder(el, key) {

  var tempDir = {
    title: key,
    children: [],
    isDirectory: true
  }

  //if Array
  if (el instanceof Array) {
    var fileDir = {
      isDirectory: false,
      files: []
    }
    el.forEach(function(file) {
      fileDir.files.push(file);
    })

    tempDir.children.push(fileDir);
  } else if (typeof el == 'object') {
    Object.keys(el).forEach(function(childFolder) {
      var folder = this.createFolder(el[childFolder], childFolder);
      tempDir.children.push(folder);

    })
  }
  return tempDir;
}

我想访问createFolder()方法,但它是undefined回调中的forEach

更正我是否有任何错误

0 个答案:

没有答案