在Angular中使用ngFor来获取和显示NgRx存储数据的步骤如下:
state.ts
的文件中创建一个状态类,其中包含你需要存储的数据。actions.ts
的文件中创建一个动作类,其中包含各种可能的动作。reducers.ts
的文件中创建减速器函数,该函数接收一个初始状态和一个动作,并返回一个新的状态。app.module.ts
文件中导入StoreModule
,并将减速器函数和初始状态传递给StoreModule.forRoot()
方法。select
方法来获取存储器中的数据。在模板中使用ngFor
指令来遍历数据并显示它们。下面是一个示例:
在state.ts文件中定义状态类:
export interface AppState {
data: any[];
}
export const initialState: AppState = {
data: []
};
在actions.ts文件中定义动作类:
import { createAction, props } from '@ngrx/store';
export const setData = createAction('[Data] Set Data', props<{ data: any[] }>());
在reducers.ts文件中定义减速器函数:
import { createReducer, on } from '@ngrx/store';
import { setData } from './actions';
import { initialState } from './state';
export const dataReducer = createReducer(
initialState,
on(setData, (state, { data }) => ({ ...state, data }))
);
在app.module.ts文件中注册存储器:
import { StoreModule } from '@ngrx/store';
import { dataReducer } from './reducers';
@NgModule({
imports: [
StoreModule.forRoot({ app: dataReducer })
]
})
export class AppModule { }
在你的组件中使用存储器和ngFor:
import { Component } from '@angular/core';
import { Store, select } from '@ngrx/store';
import { setData } from './actions';
@Component({
selector: 'app-data',
template: `
<ul>
<li *ngFor="let item of data$ | async">{{ item }}</li>
</ul>
<button (click)="setData()">Set Data</button>
`
})
export class DataComponent {
data$ = this.store.pipe(select(state => state.app.data));
constructor(private store: Store) {}
setData() {
const data = [1, 2, 3]; // 从某个地方获取你的数据
this.store.dispatch(setData({ data }));
}
}
在上述示例中,我们创建了一个名为data
的状态属性,定义了一个setData
的动作,创建了一个dataReducer
的减速器函数,并在根模块中注册了存储器。在组件中,我们使用select
方法来获取存储器中的数据,并使用ngFor
指令遍历和显示数据。当点击"Set Data"按钮时,我们使用dispatch
方法分发一个setData
动作来更新数据。
关于腾讯云相关产品和产品介绍链接地址,可以在腾讯云官网上查找相关信息。
领取专属 10元无门槛券
手把手带您无忧上云