2つのセクションを持つフォームがあります。2つのポストリクエストアクションをディスパッチします。2番目のリクエストを正常に送信するには、最初のリクエストのパラメータが必要です。しかし、どのようにすればよいかわかりません:(最初のアクションの要求と応答は正常に機能していますが、ロジックを実装する方法と場所がわかりません-サービス内にあるべきですか?レデューサーですか?次にフォークジョインを試しました自分が何をしているのかわからないことに気づきました。助けてくれてありがとう!
私のコンポーネント:
const newArtist = this.store.dispatch(new CreateArtist({
...generalDetails,
hometown,
}))
const newArtistExtraInfo = this.store.dispatch(new CreateDiscography({
...songCatalogue
}
));
forkJoin([newArtist, newArtistExtraInfo]).subscribe(result => {
console.log(`the results are in : ${result}`)
})
ディスパッチされた最初のアクションの結果を使用する場合は、CreateArtist
処理後に更新された状態を読み取ることをお勧めします。
コンポーネントSelector
でCreateArtist
は、ArtistState
:による処理の結果として作成された最新の作成アーティストを返すを使用できます。
@Select(ArtistState.latestArtist) artist$: Observable<Artist>;
this.store.dispatch(new CreateArtist(..))
.pipe(
withLatestFrom(this.artist$)
)
.subscribe(([_, artistInfo]) => {
this.store.dispatch(new CreateDiscography({ .., artistInfo.token, artistInfo.id });
})
したがって、ここでは、アーティストの作成アクションをディスパッチし、作成後の状態を読み取って、フォローアップのディスコグラフィーアクションをディスパッチするために必要なアーティスト固有の情報を取得します。
もう1つのオプションは、状態ArtistCreated
が目的のトークン/ IDを含むアクションとしてディスパッチし、コンポーネントがアクションストリームを介してサブスクライブし、そこでディスコグラフィーアクションをディスパッチできるようにすることです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加