angular - آیا روشی وجود دارد که بتوان چندین reducer را به عنوان ریشهای با استفاده از provideState() ارائه داد؟
نسخه فعلی Angular و ngrx برابر با ۱۶.۰.۰ است.
StoreModule.forRoot({
app: appReducer,
anotherFeatureName: anotherFeatureReducer
}),
EffectsModule.forRoot([
AppEffects,
AnotherEffects
]),
من مهاجرت به برنامه Angular مستقل را شروع کردم. بنابراین باید StoreModule و EffectsModule را از app.module.ts حذف کنم. اما من می توانم با استفاده از API های مستقل، چندین کاهش دهنده و اثرات نسبی ارائه کنم.
راههای مختلفی برای ارائه امتحان کردم اما هیچکدام همانطور که انتظار میرفت کار نمیکنند. وضعیت زمانی که برنامه سعی میکند آن را بخواند تعریف نشده است.
پاسخ شماره ۱
1. ابتدا مطمئن شوید که ماژولهای ضروری NgRx و ریدوسرها و افکتهای خود را وارد کردهاید.
import { provideState } from '@ngrx/store';
import { provideEffects } from '@ngrx/effects';
import { appReducer } from './app.reducer';
import { anotherFeatureReducer } from './another-feature.reducer';
import { AppEffects } from './app.effects';
import { AnotherEffects } from './another.effects';
۲. در ماژول اپلیکیشن خود، از تابع provideState() برای ارائه ریداسرهای ریشهای خود استفاده کنید
import { provideState } from '@ngrx/store';
@NgModule({
imports: [
//Remove StoreModule.forRoot()
//Remove EffectsModule.forRoot()
// Add provideState() to provide your root reducers
provideState({
app: appReducer,
anotherFeatureName: anotherFeatureReducer,
}),
],
})
export class AppModule {}
۳. به همین ترتیب، از تابع provideEffects() برای ارائهی افکتهای ریشهای خود استفاده کنید
import { provideEffects } from '@ngrx/effects';
@NgModule({
imports: [
//Remove StoreModule.forRoot()
//Remove EffectsModule.forRoot()
// Add provideState() to provide your root reducers
provideState({
app: appReducer,
anotherFeatureName: anotherFeatureReducer,
}),
// Add provideEffects() to provide your root effects
provideEffects([AppEffects, AnotherEffects]),
],
})
export class AppModule {}
