2017-09-04 132 views
1

我在接收可觀察值的組件angular中有一個函數。我需要修改observable內的對象,然後再次將其放回到observable中並返回。這是我的代碼到目前爲止: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 
     } 
    ); 
    } 

任何人都可以給我一個提示嗎?也許還有更好的方法來修改我的數組而不訂閱它,但我找不到它。謝謝。

編輯

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

現在它完全跳過了地圖功能。 「之前」和「之後」的日誌顯示相同的數組,並且「內部日誌」不顯示。

+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