javascript - 如何在 Redux 中将服务数据传递到初始状态

标签 javascript angular service redux

我有一项服务可以在购物车应用中处理我的产品数据。 我想要的是将 getProducts() 方法生成的一些数据传递到应用程序 Redux 部分的初始状态

我的服务:

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Http, HttpModule, Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';

import 'rxjs/add/operator/map';


@Injectable()
export class ProductsService {

  private products = new BehaviorSubject<any>([]);

  product = this.products.asObservable();
  dataUrl = "./assets/products.json";

  constructor( private _http: Http ) { }

  getProducts(): Observable<any>{
    return this._http.get(this.dataUrl)
    .map((res: Response) => res.json());
  }

  updateProducts(product){
    this.products.next(product);
  }

}

我的商店:

import { IProduct } from './product';
import { ADD_PRODUCT, REMOVE_PRODUCT, REMOVE_ALL_PRODUCTS } from './actions';
import { ProductsService } from './service/products.service';

export class IAppState {
    products: IProduct[];
}

export const INITIAL_STATE: IAppState = {
    constructror(private _prods: ProductsService){ }
    products = this._prods.getProducts()
}


export function rootReducer(state, action){
    switch(action.type){
        case ADD_PRODUCT:
            action.product.id = state.products.length + 1;
            action.product.isAdded = true;
            console.log(state.products)
            return Object.assign({}, state, {
                products: state.products.concat(Object.assign({}, action.product))
            })

        case REMOVE_PRODUCT:
            action.product.isAdded = false;
            return Object.assign({}, state, {
                products: state.products.filter(p => p.id !== action.id)
            })

        case REMOVE_ALL_PRODUCTS:
            return Object.assign({}, state, {
                products:[]
            })
    }
    return state;
}

但是编译器告诉

中有一个错误(意外的标记)
constructror(private _prods: ProductsService){ }

那么如何正确地将数据从我的服务传递到初始状态

最佳答案

试试这个:

import {provideStore, INITIAL_STATE} from "@ngrx/store";

bootstrap(App, [
    provideStore({counter}),
    provide(INITIAL_STATE, {
      deps: [MyCounterService],
      useFactory(counterService){
       return {counter: service.getCounterValue()};
      }])
     });

关于javascript - 如何在 Redux 中将服务数据传递到初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47478715/

相关文章:

javascript - Twitter-bootstrap 模态未显示在页面加载上(灰屏)

Angular http请求可观察到的错误没有捕获错误?

service - 开源js-kit/disqus之类的工具

javascript - 在新标签页中打开给定页面上的所有超链接

javascript - 如何从发送按钮获取 Facebook 消息内容?

javascript - 将视频帧转换为流式视频

c++ - 如何发现 DLL 是否在 Windows 服务上下文中运行?

ajax - Angular 4 : Using mockRespond with RxJS Observables

javascript - CasperJS 在使用 sendKeys 时不上传文件

Angular 延迟加载子模块空白路径重定向到 appModule