Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

326
Visualizações
Observable.forkJoin of Angular Route Params Observable

En mi componente Angular ngOnInit() quiero:

  1. Lea el parámetro de ruta y ejecute una llamada HTTP dependiente con él como argumento.
  2. Ejecute una llamada HTTP por separado.
  3. Espere a que terminen ambas llamadas HTTP.

Ambas llamadas HTTP siempre se están ejecutando, pero cuando mi primer observable está conectado a route.params , el forkJoin(...).subscribe(...) nunca se ejecuta. Si reemplazo this.route.params con Observable.of({id: 1234}) forkJoin().subscribe() se llama correctamente.

 // VERSION 1 forkJoin().subscribe() never gets called var dependentObservable = this.route.params .switchMap(params => { this.myId = +params['id']; return this.myService.getMyInfo(this.myId); }); // VERSION 2 forkJoin().subscribe gets called var dependentObservable = Observable.of({id: 123}) .switchMap(params => { this.myId = +params['id']; return this.myService.getMyInfo(this.myId); }); var independentObservable = this.myService.getOtherInfo(); Observable.forkJoin([dependentObservable, independentObservable]) .subscribe( results = { ... }, error => { ... }, () => { ... } );
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Supongo que route.params nunca se completa. Es por eso que forkJoin no funciona. Puede usar combineLatest en lugar de forkJoin

about 4 years ago · Santiago Trujillo Relatório

0

De acuerdo con este documento , forkJoin emite el último valor de cada observable, cuando se completan todos los observables.

 Observable.of({id: 123})

se completará inmediatamente después de dar {id: 123}

Pero

 this.route.params

Nunca se completará. Dado que un usuario puede cambiar los parámetros de ruta cuando edita la barra de direcciones del navegador. Estos cambios nunca se detendrán.

Creo que puedes completar observable usando take(1):

 this.route.params.take(1)

O bien, si desea responder al cambio de parámetros de ruta, use combineLatest

 Observable.combineLatest(dependentObservable, independentObservable)
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda