2017-02-21 2 views
1

J'essaye de faire plusieurs appels ajax ensemble. Je n'arrive pas à comprendre ce qui ne va pas avec ces lignes. On dirait que la deuxième entrée de la fonction souscription est traitée comme groupe [] au lieu d'autorisation []Angulaire 2 - forkJoin ne peut pas lier la bonne fille

Observable.forkJoin(
      [this.userService.getAllGroups(),this.userService.getAllAuthorizations()] 
     ) 
     .subscribe(
      ([groups,authorizations]) => { 
       this.groups = groups; 
       this.authorizations = authorizations; //error: Type 'Group[]' is not assignable to type 'Authorization[]' 
       this.loaderService.hideLoader(); 
      }, 
      (err)=>{ 
       this.loaderService.hideLoader(); 
      } 
     ); 

Interfaces sont:

(method) UserService.getAllGroups(): Observable<Group[]> 
(method) UserService.getAllAuthorizations(): Observable<Authorization[]> 

Tout le monde peut me aider à comprendre ce que le problème est?

+0

Qu'est-ce '([groupes, autorisations]) =>' censés faire? –

+0

Qu'est-ce que 'console.log (groupes, autorisations)' imprime lorsqu'il est ajouté en première ligne dans le rappel 'subscribe (...)'? –

Répondre

0

Essayez comme ceci:

Observable.forkJoin<Group[], Authorization[]>(
     this.userService.getAllGroups(), 
     this.userService.getAllAuthorizations() 
    ).subscribe(results => { 
     this.groups = results[0]; 
     this.authorizations = results[1]; 
    ); 

ou

Observable.forkJoin<Group[], Authorization[]>(
     this.userService.getAllGroups(), 
     this.userService.getAllAuthorizations() 
    ).subscribe((groups, authorizations) => { 
     this.groups = groups; 
     this.authorizations = authorizations; 
    );