Angular6 如何在简单的http调用中使用@ngrx/effects?

Angular6 如何在简单的http调用中使用@ngrx/effects?,angular6,ngrx,ngrx-effects,Angular6,Ngrx,Ngrx Effects,我有一个非常简单的http服务: import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Observable } from 'rxjs'; import { environment } from '../../environments/environment'; import { JsOrder } from '..

我有一个非常简单的http服务:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment';

import { JsOrder } from '../stores/models/order';

@Injectable({
    providedIn: 'root'
})
export class OrderService {
    private ordersUrl = `${environment.httpApiUrl}/orders`;

    constructor(private http: HttpClient) {}

    fetchOrders(): Observable<JsOrder[]> {
        return this.http.get<JsOrder[]>(this.ordersUrl);
    }
}

必须使用
管道
和可管道操作符:

@Effect()
fetchOrders$: Observable<Action> = this.actions$.pipe(
    ofType(FETCH_ORDERS),
    switchMap(() => {
        return this.orderService
            .fetchOrders()
            .pipe(
                map((jsOrders: JsOrder[]) => {  
                  const orders = jsOrders.map(jsOrder =>
                      Order.create(jsOrder)
                  );
                  return new LoadOrders(orders);
                }),
               catchError(err => of(new LoadOrdersFailure(err)))
            )
    })
);
@Effect()
fetchOrders$:Observable=此.actions$.pipe(
类型(获取订单),
开关映射(()=>{
返回此文件。orderService
.fetchOrders()
.烟斗(
map((jsOrders:JsOrder[])=>{
const orders=jsOrders.map(jsOrder=>
创建(jsOrder)
);
返回新的装载订单(订单);
}),
catchError(err=>of(new LoadOrdersFailure(err)))
)
})
);

也不要忘记捕捉错误。

非常感谢,@timdeschryver。我需要提高我的rxjs技能!您能否告诉语法以将参数传递给服务函数
fetchOrders
??
@Effect()
fetchOrders$: Observable<Action> = this.actions$.pipe(
    ofType(FETCH_ORDERS),
    switchMap(() => {
        return this.orderService
            .fetchOrders()
            .subscribe((jsOrders: JsOrder[]) => {
                return jsOrders.map(jsOrder => Order.create(jsOrder));
            })
            .map((orders: Order[]) => new LoadOrders(orders));
    })
);
@Effect()
fetchOrders$: Observable<Action> = this.actions$.pipe(
    ofType(FETCH_ORDERS),
    switchMap(() => {
        return this.orderService
            .fetchOrders()
            .pipe(
                map((jsOrders: JsOrder[]) => {  
                  const orders = jsOrders.map(jsOrder =>
                      Order.create(jsOrder)
                  );
                  return new LoadOrders(orders);
                }),
               catchError(err => of(new LoadOrdersFailure(err)))
            )
    })
);