mergeMap не существует для типа наблюдаемого - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь использовать mergeMap в rxjs6 и получаю эту ошибку:

Property 'mergeMap' does not exist on type 'Observable<{}>'

Я пробовал import 'rxjs/add/operator/mergeMap';, и он не работает.

Что я делаю не так?


import {from, Observable} from 'rxjs';

export class Test {

    public doSomething(): Observable<any> {
        return from(...).mergeMap();
    }

}

Ответы [ 4 ]

0 голосов
/ 19 августа 2018

Компонент Html Идет так

<input type="text" placeholder="input first" id="input1">
<input type="text" id="input2" placeholder="input second">
<span></span>

импорт необходимых функций

import { fromEvent } from 'rxjs'
import { map, mergeMap } from 'rxjs/operators'


var span = document.querySelector('span');
var input1 = document.querySelector('#input1');
var input2 = document.querySelector('#input2');

var obs1 = fromEvent(input1, 'input');
var obs2 = fromEvent(input2, 'input');

var obs1 = fromEvent(input1, 'input');
var obs2 = fromEvent(input2, 'input');

obs1.pipe(mergeMap(event1 => obs2.pipe(
      map(event2 => (<HTMLInputElement>event1.target).value
        + " "
        + (<HTMLInputElement>event2.target).value))))
      .subscribe((result) => {
       span.textContent=result;
      })
0 голосов
/ 02 мая 2018

Благодаря ответу @martin я смог заставить его работать с новыми pipe операциями в rxjs6. Вот мой рабочий код.

import {from, Observable} from 'rxjs';
import {mergeMap} from 'rxjs/operators';

export class Test {

    public doSomething(): Observable<any> {
        return from(...).pipe(mergeMap(...));
    }

}
0 голосов
/ 17 мая 2018

Импортируйте отдельных операторов, затем используйте конвейер вместо цепочки.

import { map, filter, catchError, mergeMap } from 'rxjs/operators';

source.pipe(
  map(x => x + x),
  mergeMap(n => of(n + 1, n + 2).pipe(
    filter(x => x % 1 == 0),
    scan((acc, x) => acc + x, 0),
  )),
  catchError(err => of('error found')),
).subscribe(printResult);

Источник: https://auth0.com/blog/whats-new-in-rxjs-6/

0 голосов
/ 02 мая 2018

Правильно, стиль операторов "патч" был удален начиная с RxJS 6. Вам лучше обновить свой код, чтобы использовать только "конвейерные" операторы, или установить пакет rxjs-compat, который обеспечивает обратную совместимость с RxJS 5.

Более подробное описание см. В официальном документе: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md

... точнее эта часть: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md#backwards-compatibility

...