2017-09-04 27 views
1

私は、観測値を受け取る私のangularコンポーネントに関数を持っています。私は、オブザーバブルの中のオブジェクトを修正し、オブザーバブルの中に再び戻して戻す必要があります。これまでのコードです:角度 - 観測値を変更する

myImmobili = Observable<Valutazione[]>; 
newImmobile(immobili: Observable<Valutazione[]>) { 

    immobili.subscribe(
     imm => { 
     console.log(imm); 
     imm.push(new Valutazione()); 
     console.log(imm); 
     this.myImmobili = //some code here 
     } 
    ); 
    } 

誰でも私にヒントを教えてもらえますか?おそらく、それを購読せずに配列を変更するより良い方法があるかもしれませんが、見つけられませんでした。ありがとう。

EDIT

newImmobile() { 

    this.immobili.subscribe(i => console.log('before', i)); 
    this.immobili.map(imm => { 
     imm.push(new Valutazione()); 
     console.log('inside', imm); 
    } 
    ); 
    this.immobili.subscribe(i => console.log('after', i)); 
    } 

は、今では完全にマップ機能をスキップします。 'before'と 'after'のログは同じ配列を示し、 'inside log'は表示されません。代わりに、あなたはマップを使用することができ、サブスクライブの

+0

あなたがオブジェクト全体を変更したり、単にいくつかの条件に基づいて、配列の値を変更したいですか? –

+0

私がsubscribe()コールの中でやっているように、配列の値だけです。変更された配列を含むObservableを返す必要があります。 – esseara

+2

'map'演算子を使用して値を変更します。 –

答えて

1

immobili.map(
    imm => { 
    console.log(imm); 
    imm.push(new Valutazione()); 
    console.log(imm); 
    this.myImmobili = //some code here 
    } 
); 
+0

あなたと@Basavaraj Bhusaniが私のコードを変更しましたが、地図オペレータの実行を完全にスキップします。 – esseara

+1

あなたは一度だけエンドポイントで購読する必要があります。マップのみを使用することはできません。それは購読と結合されなければならない。 –

+0

それはそれでした。ありがとう。 – esseara

関連する問題