ngrx-эффекты получают ошибку типа как не присваиваемую - PullRequest
0 голосов
/ 26 февраля 2019

Вот мой файл эффектов,

import { Injectable } from "@angular/core";
import { Action } from "@ngrx/store";
import { Actions, Effect, ofType } from "@ngrx/effects";
import { Observable, of } from "rxjs";
import { map, mergeMap, switchMap, catchError } from "rxjs/operators";
import { ModelCourse } from "./../models";
import { CourseService } from "./../services/course.service";
import { 
            courseActionTypes, 
            LoadCourse, 
            LoadCourseSuccess, 
            LoadCourseFail, 
            UpdateCourse,
            UpdateCourseSuccess,
            UpdateCourseFail } from "./course.actions";

@Injectable() 
export class CourseEffects {

    constructor(private courseService:CourseService, private actions:Actions){}

    @Effect()
        LoadCourse = this.actions.pipe( 
            ofType(LoadCourse.TYPE),
            mergeMap((action:LoadCourse) => this.courseService.getCourse().pipe(
                map((courses:ModelCourse[]) => {
                    return new LoadCourseSuccess(courses);
                }),
                catchError(err => of(new LoadCourseFail(err)))
            ))

        )

    @Effect()
        UpdateCourse = this.actions.pipe(
            ofType(UpdateCourse.TYPE),
            map((action:UpdateCourse) => action.payload),
            mergeMap((course:ModelCourse) => 
                this.courseService.updateCourse(course).pipe(
                    map((course) => (new UpdateCourseSuccess(course))),
                    catchError(err => (new UpdateCourseFail(err)))
                )
            )
        )

}

из вышеперечисленного, я получаю следующую ошибку.кто-нибудь поможет мне здесь?

ERROR in src/app/setup-config/state/course.effects.ts(41,24): error TS2322: Type 'UpdateCourseFail' is not assignable to type 'ObservableInput<{}>'.
  Property '[Symbol.iterator]' is missing in type 'UpdateCourseFail' but required in type 'Iterable<{}>'.

1 Ответ

0 голосов
/ 26 февраля 2019

Это моя опечатка, я обновил catchError оператором of.теперь он работает нормально.

Вот обновленный код:

 catchError(err => of(new UpdateCourseFail(err)))

Спасибо !!

...