【问题标题】:Filter the response of an observable and save to a local variable过滤可观察对象的响应并保存到局部变量
【发布时间】:2017-10-16 15:42:25
【问题描述】:

我有一个返回 ApiResponse 对象的服务,其结果是客户端对象的向量。服务运行良好,数据接收正确。问题是在我想要呈现信息的组件中,我需要过滤该服务的结果以在两个部分中显示它们,但这是不可能的,因为过滤后的向量总是空的。另一方面,我不明白的是,为什么当我尝试在 OnInit 中显示每个控制台的矢量客户端时,它会返回空,但如果它获取数据并显示它,我会在模板中使用它。

这是我的代码:

export class PartnersExpirationsComponent implements OnInit {
  expirations: Client[] = [];
  expirationsWithoutDays: Client[] = [];
  expirationsWithDays: Client[] = [];

  constructor(
    private partnersExpirationsService: PartnersExpirationsService
  ) { }

  ngOnInit() {
    this.getData();
  }

  private getData(): void {
    this.partnersExpirationsService.getClients()
      .subscribe(
      next => {
        console.log(next);
        this.expirations = next.results;
        this.expirationsWithoutDays = this.expirations.filter(client => {
          return client.extraDays === false;
        });
        this.expirationsWithDays = this.expirations.filter(client => {
          return client.extraDays === true;
        });
      },
      error => this.handleError
      );
  }
}

我正在经历而我没有意识到的事情?

编辑:这是通过控制台打印时返回下一个的模型:

export interface IARClient {
    info: {
        results: number,
        version: string,
    };
    results: Client[];
}

export class Client {
    constructor(
        public name: string,
        public lastName: string,
        public numberDni: number,
        public email: string,
        public street: string,
        public phone: number,
        public alternatePhone: number,
        public birthdate: Date,
        public dateRegister: Date,
        public balance: number,
        public extraDays: boolean,
        public district: District,
        public state: State,
        public gender: Gender,
        public associationXClient: AssociationXClient,
        public id?: number,
    ) { }
}

【问题讨论】:

  • “当我尝试在 OnInit 中显示每个控制台的矢量客户端时,它返回为空”-> 可能是因为您不知道 getClients() 是异步的。
  • 嗨@Carsten,除此之外,这是正确的,我明白,我该怎么做才能过滤这些结果?首先,过期向量填充了服务响应信息,然后我想使用填充信息的向量创建两个新向量,但信息已经从这个原始向量中过滤出来。这不可能吗?有没有办法控制这种异步?
  • console.log(next); 中的数据是什么样的?
  • 答案返回一个对象,其中包含它必须返回的所有数据。我将更新原始问题以添加模型。
  • @Carsten,我真的不明白为什么我不能执行这个简单的操作。我记得在其他地方执行了完全相同的操作并获得了正确的结果。任何帮助都会非常棒,因为我已经与这个问题作斗争了几个小时。

标签: angular service filter


【解决方案1】:

哦,哈哈,我刚刚发现你的错字:

您在 extraDays 上进行过滤,您返回的属性是 extrasDays。

现在享受你的空闲时间:)

【讨论】:

  • 现在我才意识到我的错误。这个错误很有趣,甚至很可悲,但是感谢您的时间帮助我!顺便说一句:连续工作很多,我松了一口气,这不是一个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 2019-01-30
  • 2023-04-08
  • 2018-11-23
  • 1970-01-01
相关资源
最近更新 更多