【发布时间】:2018-01-27 18:59:36
【问题描述】:
我有下一个代码:
streets: Street[] = [];
@Output() sendStreets = new EventEmitter<Street[]>();
triggerLoading(trig: string){
switch(trig) {
case 'street': {
this.loadStreets(this.district);
//sending data
this.sendStreets.emit(this.streets);
this.street = this.building = this.apartment = undefined;
this.buildings = this.apartments = this.subscribers = [];
break;
}
}
所以问题是this.loadStreets(this.district); 方法从后端的街道数组请求,当我发送数据时this.sendStreets.emit(this.streets); 我在第一个请求中进入父组件空数组,然后在第二个请求中我得到数据我应该在第一个请求等中得到。
所以,例如我应该得到:
1 个请求:“[Str1,St2,St2]”,2 个请求:[“Str10,Str20,Str30”], 3 请求:[Str20, Str30, Str40] 等。
但我明白了:`
1 请求:“[]”,2 请求:“[Str1,St2,St2]”,3 请求:[“Str10, Str20、Str30"]等
`
我怎样才能异步发出它,我的意思是在 loadStreet 完成执行后我会发出数据?
统一更新: 我如何接收数据:
<hs-filter> (sendStreets)= "getStreets($event)" </hs-filter >
getStreets(streets: Street[]){
console.log(streets);
this.streets = streets;
this.buildings = this.apartments = [];
this.streets.forEach(street => {
this.addresses.push(
new AddressItem(street.id, 'street', street.title));
});
}
【问题讨论】:
-
你需要看看你在接收组件是如何处理数据的?
-
@micronyks 请检查更新
-
您在
console.log(this.streets);中获得了所需的数据吗?? -
@micronyks 当然不是,这就是我在这里问这个问题的原因。我得到一些旧数据。第一次我记录 [],第二次 Iog 数据必须作为第一次数据等
-
您是否从 loadStreets() 正确获取数据?
标签: angular asynchronous eventemitter