函数上下文更改但无法识别局部变量

时间:2018-01-02 01:45:30

标签: angular angular2-services typescript2.0 angular5

我正在使用数据服务在兄弟组件之间传递数据。 我在数据服务中遇到一个问题,当访问数组并将数据输入时,功能的上下文会发生变化

@Injectable()
export class PassDataProxy {

passedData = [];

constructor(
) { }

pushPassedData = (input) => {

    //I can see the data passed into the function from this console
    console.log("To push: " + JSON.stringify(input));

    //This is where things go south
    this.passedData.push(input);
}

getPassedData(input) {
    return Observable.of(this.passedData);
}

clearPassedData() {
    this.passedData = null;
}

}

我从子组件中注入了依赖项并调用了pushPassedData函数,我可以看到数据从控制台成功传递给函数。但是当您访问passedData数组并运行push函数时,会出现此错误:

Error message

我的猜测是上下文已经改变,它不能再识别数组,所以我用箭头函数而不是普通函数。即便如此,我仍然有这个错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我意识到在致电clearPassedData之前我曾致电pushPassedData

这没有任何问题,但clearPassedData函数看起来应该是

clearPassedData() {
    this.passedData = [];
}

我意识到我将变量设置为null而不是[],因此它丢失了数组属性。