属性 在 angular 中未找到将流与 RxJS 结合的映射

property not found mapping combining streams with RxJS in angular

嗨,我有 Ofertas 和 concursos 这两个流

ofertas$ = this.dataService.getOfertas();
concursos$ = this.dataService.getConcursos();

ofertasConOrganismos$ = forkJoin([
 this.ofertas$,
 this.concursos$
]);

ngOnInit(): void {
this.ofertasConOrganismos$
  .subscribe(item => console.log(item));

}

在 Ofertas[] 中,每个 Oferta 都有 organismoId 属性,我需要用相关值 en Concurso[] 填充它也有这个 属性

但是当我尝试这个时

ofertasConOrganismos$ = forkJoin([
this.ofertas$,
this.concursos$
])
.pipe(
  map(([ofertas, concursos]) =>
    ofertas.map(oferta => ({
      ...oferta,
      organismoId: concursos.find(c => c.id == oferta.concursoId).organismoId
    }) as Oferta))
);

我收到这个错误

有什么想法吗?

谢谢

问题出在未定义的“concursos.find(c => c.id == oferta.concursoId)” - “find()”方法没有找到任何东西,所以你无法检索未定义对象的“.organismoId”参数。您可以使用以下可选运算符语法(带问号)以避免错误:

map(([ofertas, concursos]) =>
ofertas.map(oferta => ({
  ...oferta,
  organismoId: concursos.find(c => c.id == oferta.concursoId)?.organismoId
}) as Oferta))