【问题标题】:Typeahead: Observable.create(...).mergeMap is not a function提前输入:Observable.create(...).mergeMap 不是函数
【发布时间】:2019-03-25 04:44:22
【问题描述】:

我正在使用 ngx-bootstrap 3.0.1,我已将我的应用程序从 Angular 6.1.3 升级到 7.0.0 并收到错误 mergeMap 不是函数

CfComponent_Host.ngfactory.js? [sm]:1 错误类型错误: rxjs_Observable__WEBPACK_IMPORTED_MODULE_4__.Observable.create(...).mergeMap 不是函数

使用的代码如下所示:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/mergeMap';
import { TypeaheadMatch } from 'ngx-bootstrap/typeahead';
................
 this.dsTA = Observable.create((observer: any) => {
        observer.next(this.cl.TA);
      }).mergeMap((token: string) => this.getAsObservTA(token));

使用 Angular 6.1.3 代码工作

较旧 :"rxjs": "^6.2.2","rxjs-compat": "^6.1.0", 新:“rxjs”:“^6.3.3”,“rxjs-compat”:“^6.3.3”

Angular CLI: 7.0.2
Node: 10.12.0
OS: win32 x64
Angular: 7.0.0
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.9.0-rc.3
@angular-devkit/build-angular     0.9.0-rc.3
@angular-devkit/build-optimizer   0.9.0-rc.3
@angular-devkit/build-webpack     0.9.0-rc.3
@angular-devkit/core              7.0.0-rc.3
@angular-devkit/schematics        7.0.2
@angular/cdk                      6.4.7
@angular/cli                      7.0.2
@ngtools/webpack                  7.0.0-rc.3
@schematics/angular               7.0.2
@schematics/update                0.10.2
rxjs                              6.3.3
typescript                        3.1.3
webpack                           4.21.0

感谢任何线索

【问题讨论】:

  • 你为什么不做正确的事情,并使用 rxjs,因为它应该从 angular 6 开始使用(即使用管道运算符),而不是使用旧的“兼容”方式?
  • 似乎使用管道解决了问题。谢谢:this.dataSource = Observable.create((observer: any) => {observer.next(this.asyncSelected); }) .pipe( mergeMap(( token: string) => this.getStatesAsObservable(token)) );

标签: angular ngx-bootstrap angular7


【解决方案1】:

RxJs 在 >= 6.0.0 版本中发生了变化

以下是您需要执行的操作才能使您的代码正常工作。

import { mergeMap } from 'rxjs/operators';

................
 this.dsTA = Observable.create((observer: any) => {
        observer.next(this.cl.TA);
      }).pipe(mergeMap((token: string) => this.getAsObservTA(token)));

请查看以下网址了解迁移的详细信息

https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 2019-03-06
    • 2019-02-04
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多