【发布时间】:2019-07-02 01:20:05
【问题描述】:
鉴于这个外观:
@Injectable()
export class LookupDataFacade
{
public saved$: Observable<boolean>;
public loaded$: Observable<boolean>;
public allLookups$: Observable<ILookup[]>;
public selectedLookup$: Observable<ILookup>;
constructor( protected store: Store<LookupDataPartialState> ) { }
loadAll()
{
this.store.dispatch( new LoadLookupData() );
}
...
}
还有这个效果类:
@Injectable()
export class LookupDataEffects
{
constructor(
protected actions$: Actions,
protected dataPersistence: DataPersistence<LookupDataPartialState>,
protected service: LookupDataService ) { }
@Effect()
loadLookupData$ = this.dataPersistence.fetch<LoadLookupData>( LookupDataActionTypes.Load,
{
run: ( action: LoadLookupData, state: LookupDataPartialState ) =>
{
return this.service.get().pipe( map( lookups => ( {
type: LookupDataActionTypes.Loaded,
payload: { data: lookups }
} ) ) );
},
onError: ( action: LoadLookupData, error: HttpErrorResponse ) => { this.handleError( error ); }
} );
...
handleError = function( error: HttpErrorResponse )
{
console.error( 'Error', error );
alert( error.message );
return new LookupDataError( error );
}
}
页面加载时,会调用外观的“loadAll”方法。动作被调度,但相应的效果永远不会被执行。
在我将 NgRx 和 Nrwl 包升级到最新版本之前,此代码可以正常工作(需要这样做以解决我遇到的“未捕获的类型错误:ctorParameters.map 不是函数”致命错误)。
我没有看到任何错误,也没有网络流量表明出现故障。
有人看到明显的错误吗?
【问题讨论】:
-
nrwl 与此有何关系?
-
我在效果中使用了“DataPersistence”类。不确定它或 NgRx 内部的某些东西是否阻止了效果被调用。