диспетчеризация свойств не существует в проблеме типа Observable ‹any› при использовании redux в angular 6

Я пытаюсь сделать простое приложение redux с angular 6.

reducers.ts

import { login,logout } from '../actions/actions';
export interface appReducer {
    login:boolean,
    user:String
}
const initialstate:appReducer={
    login:false,
    user:'guest'
}
export function reducer(state=initialstate,action):appReducer {
    switch(action.type) {
        case login:
            return {...state,login:true,user:action.payload}
        case logout:
            return {...state,login:false,user:action.payload}   
    }
    return state;
}

actions.ts

export const login="LOGIN";
export const logout="LOGOUT"

index.ts

import { reducer,appReducer } from './reducer';
import { ActionReducerMap }  from '@ngrx/store';
interface appState {
    appReducer:appReducer;
}
export const reducers:ActionReducerMap<appState>= {
    appReducer:reducer
}

records.service.ts

import { Injectable } from '@angular/core';
import { HttpClient,HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Store }  from '@ngrx/store';
export class RecordsService {
  getLogin:boolean=false;
  constructor(private http:HttpClient,private store:Store<any>) { 
    this.recordFunc();
  }
     getState() {
        return this.store.select('appReducer');
      }
      updateState(action) {
        if(action.login==true) {
            return this.store.select('appReducer').dispatch({
                type:'LOGIN',
                payload:action.uname
            })
        }
        else {
            return this.store.select('appReducer').dispatch({
                type:'LOGOUT',
                payload:action.uname
            })
        }   
      }
}

в приведенном выше коде я создал редукторы и успешно зарегистрировался в модуле хранилища. Затем я импортирую хранилище в свой файл службы (records.service.ts). Подписавшись на мой getState (), я получаю свое текущее состояние, но когда я вызываю updateState () для отправки действия по обновлению состояния, в котором отображается следующая ошибка в моем терминале, а также для обновления моего состояния.

ERROR in src/app/records.service.ts(69,44): error TS2339: Property 'dispatch' does not exist on type 'Observable<any>'.
src/app/records.service.ts(75,42): error TS2339: Property 'dispatch' does not exist on type 'Observable<any>'.

person Pranab V V    schedule 09.07.2018    source источник


Ответы (1)


Я столкнулся с той же проблемой и нашел быстрое решение.

Вместо использования store.select('appReducer').dispatch просто используйте store.dispatch.

person varun johar    schedule 17.07.2018
comment
Используйте это так: this.store.dispatch ({type: 'LOGOUT', payload: action.uname}) - person varun johar; 17.07.2018