2017-02-21 9 views
1

Я пытаюсь выполнить несколько вызовов ajax вместе. Я не могу понять, что не так с этими строками. Похоже, второй вход функции подписываться обрабатывается как группа [] вместо авторизации []Угловой 2 - forkJoin не может связывать правильную ласку

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(); 
      } 
     ); 

Интерфейсы:

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

Любой человек может помочь мне понять, что это проблема?

+0

Что такое '([группа, авторизации]) =>' должен делать? –

+0

Что делает 'console.log (groups, authorization)' print при добавлении в качестве первой строки в 'callcribe (...)' callback? –

ответ

0

Попробуйте так:

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

или

Observable.forkJoin<Group[], Authorization[]>(
     this.userService.getAllGroups(), 
     this.userService.getAllAuthorizations() 
    ).subscribe((groups, authorizations) => { 
     this.groups = groups; 
     this.authorizations = authorizations; 
    ); 
Смежные вопросы