OrderState
オブジェクトをngrxストアに格納しようとしています。私が持っている問題は、これから自分のUIにデータを抽出することです。私はちょうど非同期パイプを使用して、この観察可能なオブジェクトから子プロパティを取得します。パイプを使用してオブザーバブルからプロパティを抽出する方法
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
のではありません。 AppState
と呼ばれるラッパータイプOrderState
です。ファインなので、ログdata.orderState.stage
にコードを変更して、値1
を取得します。しかし、私がこれを行うと、orderState
はデータのプロパティではなく、明らかにコンソールの出力を見ています!
'{{(orderState $ | async).stage}}' <==この構文はうまくいくはずです。 – Meeker
悲しいことではありません。私が間違っていることを確認していない。 – Remotec
あなたの例でplnkrを作成する必要があります – Meeker