2015-10-25 19 views
6

के साथ टाइपस्क्रिप्ट में ऑब्जर्वेबल्स का विशिष्टता मैं एक ऐसी सेवा बनाने की कोशिश कर रहा हूं जो एक अवलोकनयोग्य लौटाता है जो मेरे घटक सब्सक्राइब कर सकते हैं।एंगुलर 2

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

मैं वर्तमान में alpha.44 निर्माण, और आप नीचे दिए गए कुछ कोड है कि समस्या reproduces मिलेगा चला रहा हूँ: लेकिन मैं निम्नलिखित त्रुटि मिलती है।

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

वापस जाने के लिए कोड बदलना "किसी भी" प्रकार काम करने के लिए लगता है, लेकिन यह है कि टाइपप्रति उपयोग करने के लाभों में से कुछ को हटा। Angular2 के वर्तमान निर्माण में अवलोकन के लिए सख्त प्रकारों का उपयोग करने में सक्षम होने का कोई अच्छा तरीका है?

उत्तर

6

क्या http.get से लौट रहा है rxjs, नहीं angular2 Observable से Observable है। अस्थायी रूप से समाधान के रूप में आप "@ reactivex/rxjs/dist/cjs/Observable" से rxjs Observable आयात कर सकते हैं (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()); 
    } 
} 

लेकिन आईएमएचओ इस समय पर "किसी भी" को वापस करने के लिए कोड को बदल रहा है। वे अब in angular2 http module करते हैं।

+0

मैं जवाब को स्वीकार करेंगे से अधिक NGC त्रुटियों खाई करने के लिए। और आईडी जोड़ना पसंद है कि मुझे यह भी लगता है कि अभी के लिए "किसी भी" के साथ जाकर सबसे अच्छा समाधान हो सकता है और जैसे ही ऑब्जर्बल-एडाप्टर में कोणीय 2 को उचित इंटरफ़ेस मिल जाता है। – Etse

+5

भविष्य में इस प्रश्न को ढूंढने वाले लोगों के लिए नोट: बिल्ड 46 से http.get एक अवलोकन योग्य नहीं देता है, जो RxObserbable को बढ़ाता है। – Etse

0

उपयोग इस तरीकों की इस तरह जो नमूदार रिटर्न

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