Angular 角度递归函数在调用自身时抛出错误?

Angular 角度递归函数在调用自身时抛出错误?,angular,typescript,Angular,Typescript,我有一个递归函数,当在角度范围之外时,它工作得非常好。它都是原生JS,但在angular2/4中尝试使用它时似乎会抛出错误 功能: convertToArray(object, keys) { Object.keys(object).forEach(function (k) { if (object[k] && typeof object[k] === 'object') { this.convertToArray(object[k

我有一个递归函数,当在角度范围之外时,它工作得非常好。它都是原生JS,但在angular2/4中尝试使用它时似乎会抛出错误

功能:

convertToArray(object, keys) {
    Object.keys(object).forEach(function (k) {
        if (object[k] && typeof object[k] === 'object') {
            this.convertToArray(object[k], keys);
        }
        if (keys.indexOf(k) !== -1 && !Array.isArray(object[k])) {
            object[k] = [object[k]];
        }
    });
}
我通过以下方式调用该方法:

console.log(this._utils.convertToArray(this.mapRulesData, ['rule']))
当我在项目中运行它时,我得到以下错误:

TypeError: Cannot read property 'convertToArray' of undefined
当我在函数中执行一些
console.log
时,它似乎在抛出错误之前到达了这一行:

this.convertToArray(object[k], keys);

当尝试以这种方式调用方法本身时,angular是否有什么特殊之处?

函数(k)
中丢失,并且不引用对象本身。每个
函数
创建都有自己的

把它改成。箭头函数不绑定自己的

convertToArray(object, keys) {
    Object.keys(object).forEach(k => {
        if (object[k] && typeof object[k] === 'object') {
            this.convertToArray(object[k], keys);
        }
        if (keys.indexOf(k) !== -1 && !Array.isArray(object[k])) {
            object[k] = [object[k]];
        }
    });
}

函数(k)
中丢失,并且不引用对象本身。每个
函数
创建都有自己的

把它改成。箭头函数不绑定自己的

convertToArray(object, keys) {
    Object.keys(object).forEach(k => {
        if (object[k] && typeof object[k] === 'object') {
            this.convertToArray(object[k], keys);
        }
        if (keys.indexOf(k) !== -1 && !Array.isArray(object[k])) {
            object[k] = [object[k]];
        }
    });
}