Angular rx js до rx js 6 и rxrs-compat - PullRequest
       4

Angular rx js до rx js 6 и rxrs-compat

0 голосов
/ 19 марта 2020

Я попытался ввести следующую команду:

 npm install --save rxjs-compat

, но я не могу найти папку rxjs-compat. В любом случае, вот реальная проблема:

 import { Subject } from 'rxjs';
 import { startWith, DebounceTime } from 'rxjs/Operator';
 ...
 ngOnInit() {
  this.products$ = this.searchSubject
    .startWith(this.searchTerm)
    .debounceTime(300)
 }

Я вижу, что startWith. js и debounceTime. js оба ссылаются на rx js -compat. Вот почему я попытался установить его. Я думаю, что мои 2 оператора импорта правильные, но, вероятно, не мой ngOnInit.

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Я полагаю, что вы спрашиваете, как преобразовать этот код в Pipeable Operators .

import { startWith, debounceTime } from 'rxjs/operators';
ngOnInit() {
  this.products$ = this.searchSubject
    .pipe(startWith(this.searchTerm), debounceTime(300));
 }
0 голосов
/ 19 марта 2020

Цель rx js compat - заставить синтаксис rx js v5 работать с rx js v6. Если вы пишете новый код, следует использовать новый синтаксис, который требует конвейер и импорт операторов:

import { startWith, debounceTime } from 'rxjs/operators'

this.products$ = this.searchSubject.pipe(
  startWith(this.searchTerm),
  debounceTime(300)
)

однако, если вы используете синтаксис v5:

this.products$ = this.searchSubject
                     .startWith(this.searchTerm)
                     .debounceTime(300)

вам просто нужно установить rx js -компат. Вам не нужно делать никаких других импортов, кроме вашего Subject, но это перестанет работать с rx js v7, так что в ваших интересах перейти как можно скорее, поскольку v7 находится в бета-версиях прямо сейчас, я считаю.

...