我正在使用数据服务在兄弟组件之间传递数据。我在数据服务中遇到一个问题,当访问数组并将数据推入那里时,函数的上下文会发生变化。
@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
函数时,它会出现这个错误:
我的猜测是上下文被改变了,它不能再识别数组,所以我用箭头函数而不是普通函数。即便如此,我仍然有这个错误。
谢谢您的帮助。
我意识到在打电话给clearPassedData
之前我打电话给pushPassedData
。
这没有什么不对,但clearPassedData
功能应该是这样的
clearPassedData() {
this.passedData = [];
}
我意识到我将变量设置为null
而不是[]
,因此它丢失了它的数组属性。