我試圖在我的ngrx存儲中存儲OrderState
對象。我有這個問題是從我的用戶界面提取數據。我只想使用異步管道從此可觀察對象獲取一個子屬性。如何使用管道從可觀察對象中提取屬性
order.state.ts
export interface OrderState {
stage: number;
postcode: string;
}
app.component.ts
...
export class AppComponent {
counter: Observable<number>;
readonly orderState$: Observable<OrderState>;
constructor(
private appStateStore: Store<AppState>,
private counterActions: CounterActions,
private orderStateStore: Store<OrderState>,
private orderActions: OrderActions,
) {
this.counter = appStateStore.select('counter');
this.orderState$ = orderStateStore.select(store => store);
}
...
app.component.html
<div>Stage: {{ (orderState$ | async)?.stage }}</div>
什t是從我的orderstate
對象獲取stage
屬性所需的語法。
如果我顯示{{ orderState$ }}
我只是得到[Object object]
顯示在頁面上。
我猜可能我沒有從我的商店中正確選擇?
更新:我必須在這裏丟失一些基本的東西。現在我已經做到了這一點,以嘗試和工作發生了什麼事......
app.component.ts
stage: number
...
this.orderStateStore.select(s => s).subscribe((data:OrderState) => {
this.stage = data.stage;
console.log(this.stage);
});
app.component.html
<div>Stage: {{ stage }}</div>
我可以在控制檯中看到我的那個階段報告爲未定義。我相信這與問題有關。出於某種原因,我無法在此箭頭功能中設置我的組件的stage
。
更新:此行爲似乎很奇怪...
order.state.ts
export interface OrderState {
stage: number;
postcode: string;
}
app.component.ts
...
this.orderStateStore.select(s => s).subscribe((data:OrderState) => {
console.log('--- START ---');
console.log(data);
console.log('Stage: ' + data.stage);
console.log('--- END ---');
});
...
現在這是我得到的安慰樂...
正如你所看到的,data
實際上不是OrderState
類型。它是圍繞OrderState
的包裝類型,稱爲AppState
。很好,所以我修改我的代碼以記錄data.orderState.stage
以獲得值1
。然而,當我這樣做時,TypeScript抱怨orderState
不是數據的屬性 - 它顯然正在查看控制檯輸出!
'{{(orderState $ | async).stage}}'<==這個語法應該工作得很好。 – Meeker
可悲的是沒有。不知道我做錯了什麼。 – Remotec
您應該用您的示例創建plnkr – Meeker