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

问题描述 投票:0回答:1

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

@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

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

谢谢您的帮助。

angular angular2-services typescript2.0 angular5
1个回答
0
投票

我意识到在打电话给clearPassedData之前我打电话给pushPassedData

这没有什么不对,但clearPassedData功能应该是这样的

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

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

© www.soinside.com 2019 - 2024. All rights reserved.