データを取得するためにpromiseを使用するidbパッケージを使用してngrxで初期状態を設定したいが、設定しようとするたびにエラーが発生する。私は@ngrxが同期しているということは、それが約束ではうまくいかないということです。 異なる方法が私が試した:これはデータでロードIDBのための私のラッパー・メソッドは、それが正常に動作しているindexedDBの約束で@ ngrx/coreのinitialStateを設定する方法
export function getInitialState(): Promise<any> {
return StorageService.dB.loadInitialState('app-state');
}
と私は初期状態
方法を設定しようとした別の方法:1を
StoreModule.forRoot(reducers, {initialState: getInitialState})
方法:2
import { INITIAL_STATE } from '@ngrx/store';
{ provide: INITIAL_STATE, useFactory: getInitialState }
方法:3
export function logger(reducer: ActionReducer<State>): ActionReducer<State> {
return function (state: State, action: any): State {
if(action.type === '@ngrx/store/init') {
}
return reducer(state, action);
};
}
初期状態はこの
ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}
に設定されますと、私は
ERROR TypeError: Cannot assign to read only property '__zone_symbol__state' of object '[object Object]'
at resolvePromise (zone.js:810)
at eval (zone.js:876)
at ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (core.js:4747)
at ZoneDelegate.invokeTask (zone.js:424)
at Zone.runTask (zone.js:192)
at drainMicroTaskQueue (zone.js:602)
at ZoneTask.invokeTask [as invoke] (zone.js:503)
at invokeTask (zone.js:1540)
at IDBRequest.globalZoneAwareCallback (zone.js:1566)
*******アップデートを、このエラーが発生します** *****
私はそれが今すべての州の可能性を指摘したようにそれらがロードされるときに起動されるエフェクトにはinit関数がありますが、最初はグローバルなワンタイムイベントだと思いました。ここで私は認証状態
@Effect()
init$: Observable<Action> = defer(() => {
return from(StorageService.readItem('app', Auth.AUTH_KEY)).pipe(
map((data: any) => {
return new Auth.AuthInit(data.state);
})
);
});
initはあなたに感謝し、彼らの例では、彼らは元を延期使用存在を知りませんでした:初期化$:観察可能 =延期(()=>(新RootInitの())); RootInitでペイロードとして送信するには、どうすればそれを約束することができますか? –
ramon22