#javascript #angular #ngrx #store
Вопрос:
у меня есть класс эффектов NgRX, который, я думаю, почти такой же, как в документах.
import { Injectable } from '@angular/core'; import { Actions, createEffect, ofType } from '@ngrx/effects'; import { EMPTY } from 'rxjs'; import { map, mergeMap, catchError } from 'rxjs/operators'; import { SocialLearningFacadeService } from '../../facades/social-learning-facade.service'; import { loadCategories, retreivedCategories } from '../actions/categories'; @Injectable() export class CategoriesEffects { loadMovies$: any = createEffect((): any =gt; this.actions$.pipe( ofType(loadCategories), mergeMap(() =gt; this.socialLearningFacadeService.getSocialLearningCategories().pipe( map((categories) =gt; retreivedCategories({ socialLearningCategories: categories }) ), catchError(() =gt; EMPTY) ) ) ) ); constructor( private actions$: Actions, private socialLearningFacadeService: SocialLearningFacadeService ) {} }
мои действия:
import { createAction, props } from '@ngrx/store'; import type { SocialLearningCategory } from '../../../../core/models/socialLearningCategory'; export const loadCategories = createAction('load categories'); export const retreivedCategories = createAction( 'retreived social learning categories', propslt;{ socialLearningCategories: any }gt;() );
и на карте слияния есть эта ошибка:
Я понятия не имею, как интерпретировать эту ошибку, особенно учитывая, что мой пример очень похож на документальный и все еще не работает.
РЕДАКТИРОВАТЬ: Служба фасада социального обучения
import { Observable } from 'rxjs'; import { Injectable } from '@angular/core'; import { SocialLearningService } from '../services/social-learning.service'; import type { SocialLearningCategory } from '../../../core/models/socialLearningCategory'; import type { SocialLearningCategoryDetails } from '../../../core/models/socialLearningCategoryDetails'; @Injectable({ providedIn: 'root', }) export class SocialLearningFacadeService { constructor(private socialLearningService: SocialLearningService) {} public getSocialLearningCategories(): Observablelt;SocialLearningCategory[]gt; { return this.socialLearningService.getSocialLearningCategories(); } public getSocialLearningCategoryDetails( id: number ): Observablelt;SocialLearningCategoryDetailsgt; { return this.socialLearningService.getSocialLearningCategoryDetails(id); } }
Комментарии:
1. Эффекты ожидают, что наблюдаемое будет возвращено. Вам нужно добавить
return
инструкцию, преждеthis.socialLearningFacadeService.getSocialLearningCategories()
чем возвращать наблюдаемое, возвращаемое этим вызовом службы.2. похоже, это не работает, его уже вернула функция со стрелкой
3. Пожалуйста, проверьте возвращаемый контент из этой службы.socialLearningFacadeService.getsociallearningкатегории ().
4. Хороший улов. Было очень поздно, когда я прокомментировал это и пропустил функцию стрелки.
5. Служба возвращается наблюдаемой, как и должно быть, я не думаю, что в этом проблема.