2016-05-27 9 views
0

私は、観察対象物Oがある場合:このオブジェクトを行うに加入することを私ができるAngular2:なぜSubscriberオブジェクトにサブスクライブできないのですか?

let o: Observable<Object> = ... 

をなぜSubscriberオブジェクトへの加入を許可されているではありません。実際の世界の例を与えるには:

myServiceCall() { 
    let o: Observable<Object> = ... 
    return o.subscribe(...) 
    } 

    ngOnInit() { 
    this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object 
    } 

約束すると、それは複数の行を使用するようなものになります。なぜそれが許されないのか分かりません。

答えて

0

myServiceCallメソッドはサブキャリブレーションを返し、観察可能ではないという問題があります。そしてあなたはサブスクリプションを購読することはできません。このオブジェクトは、Observableに対するサブスクリプションを取り消す方法を提供します(unsubscribe)。

myServiceCall() { 
    let o: Observable<Object> = ... 
    return o.do((data) => { // <---- 
    // do something with the received data without subscribing 
    }); 
} 

ngOnInit() { 
    this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object 
} 
0

SubscriptionないObservableを返しsubscribe()

オプションはdo演算子を使用することができます。 Subscriptionに登録することはできません。

代わりに使用

myServiceCall() { 
    let o: Observable<Object> = ... 
    return o.map(...) 
    } 

    ngOnInit() { 
    this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object 
    } 
関連する問題