用的Angular2
订阅了subject类型的消息
某一个组件的ts文件的部分代码如下:
........
var list:Array<T> //有一个list的变量
ngOnint(){
this.___service.getData() //getData是从websockect来的
.subscribe(data=>{
console.log(data);
this.list = data;
接下来的代码是对list的操作....
})
}
问题是:因为异步加载的原因(?),对list操作时报错list的XXXis undefined。怎么样让对list的操作在list赋值完成后进行。如果在里面console(data[0])也是显示undefined
https://blog.csdn.net/u013480581/article/details/80830634
写法有点问题,this在subscribe方法里面指向的是websockect对象(this在ts和js中是关键字指向的是操作对象),用下面的写法写:
var list:Array //有一个list的变量
ngOnint(){
const self=this;
this.___service.getData() //getData是从websockect来的
.subscribe(data=>{
console.log(data);
self.list = data;
接下来的代码是对list的操作....
})
}
楼上说法半对,因为你不需要用self:
首先,你在定义list的时候你需要定义成类成员,也就是在component里直接写public list: Array《T》, 不写public也可以,但是不能写成var list. 然后你就可以在其他地方用this引用他,因为这个时候已经实例化了。
在subscribe里面也可以直接写this.list因为箭头函数已经帮你绑定了this的上下文。
所以你一开始没有把list定义成类成员那么后面你在引用this.list时就找不到他。
不清楚你的data格式是怎样的,但是如果你console.log(data)写在subscribe里面肯定是能拿到数据的然后对其操作,但你的data[0]可能没有数据。另外一点,
angular的httpclient在取到数据时已经帮你parse出数据了(默认做了response.json())