Ошибка при реализации ngRx «Свойство pipe» не существует для типа «Actions <Action>». " - PullRequest
1 голос
/ 06 февраля 2020

Я использую следующие версии:

  • @ ngrx / effects@8.6.0
  • @ ngrx / store@8.6.0
  • @ ngrx / core@1.2.0

  • @ угловой / cli@8.3.25

импорт:

import { BookService } from './../services/book.service';
import {Actions, Effect, ofType} from '@ngrx/effects';
import {mergeMap, map} from 'rxjs/operators';
import {Action} from '@ngrx/store';
import * as types from './action.types';
import * as bookActions from './book.actions';

конструктор:

constructor(private service: BookService,
        private actions$: Actions){}

@Effect() loadBooks$: Observable<Action> = this.actions$.pipe(
        ofType<bookActions.loadBooksAction>(types.LOAD_BOOKS),
        mergeMap(() => 
            this.service.getAllBooks().pipe(map(books => 
                new bookActions.loadBooksSuccessAction(books)))
        )
    )

Ошибка: свойство 'pipe' не существует для типа 'Actions'.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Проблема в зависимости @ngrx/core@1.2.0. Это старая версия и устаревший пакет для ngrx.

Вы должны удалить его.

0 голосов
/ 06 февраля 2020

Во-первых, ngrx v8 использует новый синтаксис , поэтому вы можете проверить его с помощью своего кода

Образец из документов

search$ = createEffect(() => ({
  // assign default values
  debounce = 300,
  scheduler = asyncScheduler
} = {}) =>
  this.actions$.pipe(
    ofType(BookActions.search),
    debounceTime(debounce, scheduler),
    ...
  )
);

Во-вторых, удалить пакет-блокировку . json и @ngrx/core пакета (в этом нет необходимости). json

И обновление пакета. json вот так

"@ngrx/effects": "^8.6.0",
"@ngrx/store": "^8.6.0",
"@ngrx/store-devtools": "^8.6.0",

Затем запустите

npm cache clean --force
npm i 

Вы можете удалить папку node_modules и запустить npm i, если проблема все еще существует

...