2015-11-13 19 views
5

Jestem nowy maszynopis i Angular2 i próbuję stworzyć obietnicę na żądanie HTTP GET, ale kod poniżej (dokładnie return this.http.get(url) linia daje mi błąd:błąd TS2346: Dostarczane parametry nie znaleziono żadnych podpis celu wywołania

error TS2346: Supplied parameters do not match any signature of call target.

w mojej służbie mam metoda isLoggedIn

isLoggedIn(): Promise<Object> { 
    return this.http.get('/some/path') 
     .map((res: Response) => res.json()) 
     .toPromise(); 
} 

Następnie chcę go używać w moim komponentu tak:

onInit() { 
    this.login.isLoggedIn() 
    .then((data: any) => { 
     if (data.hasOwnProperty('status') && data.status === 401) { 
      this.router.navigate(['/Login']); 
     } else { 
      this.router.navigate(['/Home']) 
     } 
    }); 
} 

Szukałem, jak korzystać z żądania http i obiecuję właściwą drogę, ale nie mogłem znaleźć żadnego dobrego opisu.

Odpowiedz

0

Szybkie spojrzenie na Kątowymi źródła:

static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }

ujawnia, że ​​toPromise metoda powinna otrzymać Observable<any> (wezwanie było: toPromise())

myślę, że to jest przyczyną błędu

+0

więc powinienem umieścić parametr w metodzie toPromise(), ale tak naprawdę nie mam pojęcia, co powinienem tam umieścić po żądaniu http.get. Dokumentacja dla A2 jest obecnie bardzo słaba:/i przekopuję się przez Internet, aby znaleźć rozwiązanie. – arthurr

+0

Poszukam też tego. Dlaczego nie trzymasz się Observables? –