Tengo la siguiente propiedad adicional
export interface MetricCreateState extends EntityState<UserSelectionListDto> { isLoading: boolean | undefined, isCreated: boolean | undefined, LoadConfigureMetric: boolean | undefined }Creó un adaptador y una propiedad inicial.
export const adapter = createEntityAdapter<UserSelectionListDto>(); export const { selectAll, selectEntities } = adapter.getSelectors(); export const initialState: MetricCreateState = adapter.getInitialState({ isLoading: false, isCreated: false, LoadConfigureMetric: false });Tengo un efecto que carga los datos del lado del servidor como
readonly getMetricOwners = this.effect((owners$: Observable<UserSelectionListDtoPagedResultDto>) => { this.setState((state) => adapter.setAll([], { ...state, isLoading: true })); return owners$.pipe(() => this.userServiceProxy.getUsersForSelection(undefined, undefined, undefined, undefined, undefined).pipe( tap({ next: (owners) => { this.setState((state) => adapter.setAll(owners.items, { ...state, isLoading: false })); }, error: (e) => { this.setIsLoading(false); }, }), catchError(() => EMPTY), )); });Aquí estoy tratando de actualizar la propiedad única
this.setState((state) => adapter.setAll([], { ...state, isLoading: true }));¿Es esta la forma correcta de establecer la propiedad adicional de la entidad? y cómo seleccionamos la propiedad adicional particular. Por ejemplo
isLoadingisLoadingNo realmente, setAll también actualiza la colección de entidades
Reemplazar la colección actual con la colección provista -docs
Si solo desea actualizar isLoading , no necesita un adaptador porque el adaptador solo maneja las entidades.
Para actualizar isLoading , simplemente puede hacer lo siguiente
{ ...state, isLoading: true } o use el método de patch de la tienda de componentes ngrx
this.componentStore.patchState({isLoading: true});