0

J'essaie d'obtenir une réponse d'erreur de succès après une demande de correctif faite à l'intérieur d'un service. Bien que je puisse détacher le succès ou la réponse d'erreur dans le service lui-même, mais je ne suis pas capable de "s'abonner" ou obtenir une promesse de réponse à la fonction dans le composant qui l'a appelé.Impossible d'obtenir la méthode .then à partir d'un service abonné

Voici la fonction dans mon composant qui appelle le service

this.os.edit({ 
      description: this.form.value.description, 
      role_info: { 
       all_learning_points: learningPointsArray 
      } 
     }).then((data) => { 
      console.log("Data is ", data);//Can't get the value over here 
     }, (error) => { 
      console.log("Error is: ", error); 
     }); 

Voici la fonction au service

edit(data) { 
     return new Promise((resolve, reject) => { 
      this.model.patch(`opportunities/${this.opportunity.value.id}`, {opportunity: data}) 
      .subscribe(data => { 
       this.opportunity.next(data); //Getting the value here 
       this.router.navigate(['opportunity', this.opportunity.value.id]); 
      }, error => { 
       console.log("Error is: ", error); 
       alert('Something went wrong'); 
      }); 
     }) 
    } 

D'une certaine façon mon .alors n'est pas en mesure de saisir la réponse rejeté par la promesse dans la fonction d'édition.

Qu'est-ce qui me manque ici?

+0

pourquoi abonnez-vous un promsie, il devrait être résolu et aussi vous ne devez pas résoudre en service à la place juste retourner une promesse et le résoudre en composant –

Répondre

1

Avec les promesses que vous devez modifier cette ligne (Observateur/style Sujet)

this.opportunity.next(data); 

dans

resolve(data) 

Et vous avez mélangé à des approches ensemble. Il est préférable d'utiliser seulement d'entre eux

+0

Merci frère, a travaillé comme un charme –