【问题标题】:ngrx/effects switchMap no longer working in Angular2 RC5ngrx/effects switchMap 不再在 Angular2 RC5 中工作
【发布时间】:2016-12-22 16:33:53
【问题描述】:

我在我的 Angular2 应用程序中使用 ngrx/effects,自 RC5 发布以来,我遇到了错误。这是我的代码:

import { Injectable } from '@angular/core';
import { Effect, Actions } from '@ngrx/effects';
import { UserActions } from './user.actions';
import { LoginService } from '../login';

constructor(
  private updates$: Actions,
  private userActions: UserActions,
  private loginService: LoginService
) {}

@Effect() loadUser$ = this.updates$
  .ofType(UserActions.LOAD)
  .switchMap(() => this.loginService.loadUserData())
  .map(user => this.userActions.loadUserComplete(user.userData));

上面的代码在 Angular2 RC4 和 ngrx/effects 1.1.1 中运行良好。

但是当我将 Angular 升级到 RC5 时,我得到了错误:Unhandled Promise rejection: this.updates$.ofType(...).switchMap is not a function

然后我将 ngrx/effects 升级到最新版本 2.0.0-beta.2(根据文档应该为新的 RC5 NgModule 定制),但得到了与上面完全相同的错误。是的,我在这一步将whenAction() 函数更改为ofType()

有什么想法吗?

【问题讨论】:

    标签: angular ngrx


    【解决方案1】:

    使用import {switchMap} from 'rxjs/operators' 为我工作!这是使用版本 6.4.0

    【讨论】:

      【解决方案2】:

      您不会自动将所有 RxJS 运算符导入 Angular 2 项目中。您是否尝试手动导入 switchMap 运算符?

      import 'rxjs/add/operator/switchMap';
      

      这一定存在于你的代码中,可能它是由第三方库导入的,在此之前不再导入操作符。

      【讨论】:

      • 我有这个导入,但我收到一个错误提示 Property 'switchMap' does not exist on type Observable<{ [key: string]: any; }>
      猜你喜欢
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2019-02-03
      • 2017-11-19
      • 1970-01-01
      相关资源
      最近更新 更多