В чем разница между 'rxjs / operator' и 'rxjs / add / operator /'? - PullRequest
0 голосов
/ 04 сентября 2018

В чем разница между import { map } from 'rxjs/operators'; и import 'rxjs/add/operator/map';?

Я использую его в сервисном методе, который делает логин:

// import { map } from 'rxjs/operators'; // Fails at runtime
import 'rxjs/add/operator/map'; // Works fine at runtime

  public login(username: string, password: string): Observable<any> {
    console.log('Sending the login credentials to obtain a token');
    const credentials = { 'email': username, 'password': password };
    return this.httpService.postWithHeadersInResponse(URI_LOGIN, credentials)
      .map((response: HttpResponse<any>) => {
        const header = response.headers.get(this.authService.getHeaderName());
        const token = this.authService.extractTokenFromHeader(header);
        console.log('The token from the response header: ' + token);
        this.authService.setJwtTokenToLocalStorage(token);
      });
  }

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Разница в том, что когда вы используете rxjs/add/operator/map, он меняет прототип Observable, поэтому вы можете связать с оператором . (точка):

this.httpService.postWithHeadersInResponse(URI_LOGIN, credentials)
  .map(...);

Но этот способ использования операторов устарел. Текущий путь с rxjs/operators:

import { map } from 'rxjs/operators';
this.httpService.postWithHeadersInResponse(URI_LOGIN, credentials)
  .pipe(map(...));
0 голосов
/ 04 сентября 2018

RxJs изменили public_api.ts и переместили некоторые файлы в rxjs-проекте в более новую версию (5.5+, я думаю).

Теперь правильный путь:

import { map } from 'rxjs/operators'

Другой способ устареет / будет удален в более новой версии (где-то в блоге я читал 7.0). Кроме того, другой способ работает только с rxjs-compat в новых версиях rxjs.

И rxjs-compat больше не будет работать с RxJs 7.0 (скорее всего)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...