如何從包含使用html的數組的Observable獲取單個值。進出口運行Angular2 W /打字稿在特定索引處獲取數組元素的可觀察性[html]
打字稿
private observable = Observable.of([1,2,3,4,5])
HTML
<p>{{observable[2]}}</p>
即獲得由觀察到
如何從包含使用html的數組的Observable獲取單個值。進出口運行Angular2 W /打字稿在特定索引處獲取數組元素的可觀察性[html]
打字稿
private observable = Observable.of([1,2,3,4,5])
HTML
<p>{{observable[2]}}</p>
即獲得由觀察到
直接根據以前的答案。你應該避免2件事(如果可能的話):
.subscribe()
。使用異步管道,以便它可以管理訂閱。.subscribe(val => this.val = val)
。直接使用流,並添加Subject
(行爲,異步,無論),所以完整的邏輯將在流內關閉。針對您的問題的解決方案是創建一個包含當前索引,可觀察數組並且在索引處發出元素的流。
public index$ = new BehaviorSubject(2)
public observable$ = Observable.of([1,2,3,4,5])
public elementAtIndex$ = Observable.combineLatest(
this.index$,
this.observable$,
(index, arr) => arr[index]
)
然後在您的視圖:
所以每次指數/陣列改變它發出適當的值。 如果您想要選擇另一個索引,例如5,那麼就執行this.index$.next(5)
或者,如果你只是想獲得一次然後就
public elementAtIndex2$ = this.observable$.map(arr => arr[2])
持有指數2數組元素你可能需要訂閱可觀察,然後按索引訪問該值:
@Component({
template: `Value: {{ observableValue[2] }}`
})
export class SampleComponent implements OnInit {
values = Observable.of([1, 2, 3, 4, 5]);
observableValue: number[];
ngOnInit(): void {
this.values.subscribe(value => this.observableValue = value);
}
}
如果沒有訂閱Observable,您無法獲得價值。
private observable = Observable.of([1,2,3,4,5])
或者你可以使用異步管道中的HTML
<p>{{observable | async}}</p>
這是我需要的正是。謝謝。 – martinomburajr
whers(索引,arr)是從哪裏來的?我得到'Type'{}'不能用作索引類型'錯誤 – ishandutta2007
'.combineLatest'的最後一個參數採用將合併值作爲參數的函數。看簽名:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/combinelatest.md – krystianpe