Angular 从后端获取一些数据后的 EventEmitter
Angular EventEmitter after getting some data from back-end
我有下一个代码:
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 request: "[Str1, St2, St2]", 2request: ["Str10, Str20, Str30"],
3request: [Str20, Str30, Str40] etc.
但我得到:`
1request: "[]", 2 request: "[Str1, St2, St2]", 3request: ["Str10,
Str20, Str30"] etc.
`
我怎样才能异步发出它,我的意思是在 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));
});
}
我已经解决了这个问题,但我不喜欢我的解决方案。
如果有人有另一个,请回答
我刚刚将 sendStreets 移到了 loadStreets 中。所以我得到下一个代码:
private loadStreets(district: District){
this.addressService.getStreets(district)
.subscribe(streets => {
this.streets = streets;
this.sendStreets.emit(streets);
});
}
这里一切正常,因为我在从后端获取街道后发送街道。
class EventEmitter 扩展主题 {
构造函数(isAsync:boolean = false)-
所以对于你的情况:
@Output() sendStreets = new EventEmitter(true);
我有下一个代码:
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 request: "[Str1, St2, St2]", 2request: ["Str10, Str20, Str30"], 3request: [Str20, Str30, Str40] etc.
但我得到:`
1request: "[]", 2 request: "[Str1, St2, St2]", 3request: ["Str10, Str20, Str30"] etc.
`
我怎样才能异步发出它,我的意思是在 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));
});
}
我已经解决了这个问题,但我不喜欢我的解决方案。 如果有人有另一个,请回答
我刚刚将 sendStreets 移到了 loadStreets 中。所以我得到下一个代码:
private loadStreets(district: District){
this.addressService.getStreets(district)
.subscribe(streets => {
this.streets = streets;
this.sendStreets.emit(streets);
});
}
这里一切正常,因为我在从后端获取街道后发送街道。
class EventEmitter 扩展主题 { 构造函数(isAsync:boolean = false)- 所以对于你的情况: @Output() sendStreets = new EventEmitter(true);