Typeahead: Observable.create().mergeMap не является функцией

Я использую ngx-bootstrap 3.0.1, обновил приложение с Angular 6.1.3 до 7.0.0 и получил ошибку mergeMap не является функцией:

CfComponent_Host.ngfactory.js? [sm]:1 ОШИБКА TypeError: 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));

с угловым кодом 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

спасибо за любую подсказку


person mrapi    schedule 20.10.2018    source источник
comment
Почему бы вам не поступить правильно и не использовать rxjs так, как он должен использоваться, начиная с angular 6 (т.е. использовать конвейерные операторы), вместо использования старого совместимого способа?   -  person JB Nizet    schedule 20.10.2018
comment
кажется, что использование канала решает проблему. getStatesAsObservable(токен)));   -  person mrapi    schedule 20.10.2018


Ответы (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)));

Пожалуйста, посмотрите на приведенный ниже URL-адрес для получения подробной информации о миграции.

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

person Vivek Kumar    schedule 20.10.2018