【问题标题】:Angular EventEmitter after getting some data from back-end从后端获取一些数据后的Angular EventEmitter
【发布时间】: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


【解决方案1】:

类 EventEmitter 扩展主题 { 构造函数(isAsync: boolean = false) - 所以对于你的情况: @Output() sendStreets = new EventEmitter(true);

【讨论】:

    【解决方案2】:

    我已经解决了这个问题,但我不喜欢我的解决方案。 如果有人有其他的,请回答

    我刚刚将 sendStreets 移至 loadStreets。所以我得到下一个代码:

    private loadStreets(district: District){
        this.addressService.getStreets(district)
          .subscribe(streets => {
            this.streets = streets;
            this.sendStreets.emit(streets);
          });
      }
    

    这里一切正常,因为我在从后端获取街道后发送街道。

    【讨论】:

      猜你喜欢
      • 2019-05-27
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2018-10-09
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      相关资源
      最近更新 更多