2015-10-25 25 views
6

Bileşenlerimin abone olabileceği Gözlemlenen bir hizmeti veren bir hizmet oluşturmaya çalışıyorum. Şu anda sorunu reproduces bazı kodlar bulacaksınız alpha.44 oluşturmak ve altınızda çalıştırıyorumAngular2 ile TypeScript'teki Gözlemlerin Belirtimi

Property 'subscribe' does not exist on type 'Observable'. 

: Ama aşağıdaki hatayı alıyorum. dönmek için kod değiştirme

import {Http} from 'angular2/http'; 
import {Observable} from 'angular2/core'; 

export class Backend { 
    http: Http; 

    constructor(http: Http) { 
     this.http = http; 
     this.getTeams().subscribe(); 
    } 

    public getTeams(): Observable { 
     return this.http.get('/api/teams') 
      .map(JSON.parse); 
    } 
} 

"herhangi bir" tip iş gibi görünüyor, ama bu typescript kullanmanın avantajlarından bazıları kaldırır. Angular2'nin şu anki yapısındaki Gözlemciler için katı tipler kullanmanın iyi bir yolu var mı?

cevap

6

http.get'dan dönenler, rxjs'dan Observable, angular2 Observable değil. Geçici çözüm olarak, rxjs Observable'u "@ reactivex/rxjs/dist/cjs/Observable" adresinden alabilirsiniz (bkz. this plunker).

import Observable from '@reactivex/rxjs/dist/cjs/Observable'; 

class Backend { 
    // ... 
    getTeams() : Observable { 
    return this.http.get('api/teams.json') 
     .map(res => res.json()); 
    } 
} 

Ancak IMHO, "herhangi bir" döndürme kodunu değiştirerek şu anda en iyi çözümdür. Şimdilik in angular2 http module yapıyorlar.

+0

cevabı kabul edecek gözlemlenebilir döndüren yöntemlerin bu tür üzerinde ngc hataları hendek. Ve id, ben de şimdi "herhangi bir" ile gitmek için en iyi çözüm olabilir ve sadece açısal2 adaptör uygun arabirimi alır almaz bunu düzeltmek olduğunu düşünüyorum. – Etse

+5

Gelecekte bu soruyu bulmakta olan kişiler için not: yapı 46'dan http.get, RxObserbable'ı genişleten Gözlemlenebilir 'u döndürmez. – Etse

0

kullanımı bu

yourMethod(...arguments): Observable<any> {}