angular6 - Angular 6+的ngrx效果中的switchMap引发类型错误
问题描述
我在我的 Angular 6 + Ngrx 应用程序中编写了一个效果,但是它引发了以下错误。
类型Observable<RouteSuccessAction>
参数不可分配给类型参数<value: never, index: number> => ObservableInput<Action>
以下是代码片段。
route.effects.ts
@Injectable()
export class RouteEffect {
constructor(private actions: Actions, private routeService: RouteService) {
}
@Effect()
getRoutes$: Observable<Action> = this.actions.pipe(
ofType(RouteActions.RouteActionTypes.ROUTE_LOAD), switchMap(
this.routeService.getRoutes().pipe(
map(routes => new RouteActions.RouteSuccessAction(routes.route))
)
)
);
}
route.actions.ts
import { Action } from '@ngrx/store';
import { Route } from '../model';
export enum RouteActionTypes {
GET_ROUTE = '[GET ROUTE] GET',
ROUTE_FAIL = '[ROUTE_FAIL] FAIL',
ROUTE_SUCCESS = '[ROUTE_SUCCESS] SUCCESS',
ROUTE_LOAD = '[ROUTE_LOAD] LOAD',
}
export class GetRouteAction implements Action {
readonly type = RouteActionTypes.GET_ROUTE;
}
export class RouteSuccessAction implements Action {
readonly type = RouteActionTypes.ROUTE_SUCCESS;
constructor(public payload: Route[]) {
}
}
export class RouteFailureAction implements Action {
readonly type = RouteActionTypes.ROUTE_FAIL;
constructor(public payload: any) {
}
}
export type RouteActions = GetRouteAction | RouteSuccessAction | RouteFailureAction;
路线模型.ts
export interface Route {
'referringURL': string;
'routeName': string;
'visible': boolean;
}
服务返回以下响应
[
{
"referringURL": "",
"routeName": "route1",
"visible": true
},
{
"referringURL": "",
"routeName": "route2",
"visible": true
},
{
"referringURL": "",
"routeName": "route3",
"visible": true
}
]
解决方案
你的开关图不是它应该是的功能
switchMap(() => ...)
推荐阅读
- angular - Ngxs - 我如何链接操作?
- python - 删除 _ 之前和包括的字符并计算
- java - Java 客户端中的 HDFS INotify 和 Kerberos 身份验证
- javascript - npm 运行开发脚本错误
- java - SP800_131严格模式下只能启用TLS1.2协议
- drupal - Drupal 商务请求是什么样的?
- angular - 错误类型错误:无法在搜索功能中读取未定义的属性“切片” - Angular 2+
- angular - Angular 2:删除递归实例化的组件以某种方式创建新的组件实例
- python - Scikit learn LogisticRegression 添加特征时日志损失增加
- delphi - 当第二个单词实例运行或激活时,单词功能区在 ole 容器中被禁用