Rxjs v 6.*
使用较新版本的 rxjs 简化了它。
1) 运算符
import {map} from 'rxjs/operators';
2) 其他
import {Observable,of, from } from 'rxjs';
我们需要管道而不是链接。例如
旧语法:
source.map().switchMap().subscribe()
新语法:
source.pipe(map(), switchMap()).subscribe()
注意:由于与 JavaScript 保留字的名称冲突,某些运算符会发生名称更改!其中包括:
do -> tap,
catch -> catchError
switch -> switchAll
finally -> finalize
Rxjs v 5.*
我写这个答案部分是为了帮助自己,因为我每次需要导入 operator 时都会检查文档。让我知道是否可以做得更好。
1)import { Rx } from 'rxjs/Rx';
这会导入整个库。然后你就不用担心加载每个 operator 了。但是你需要附加 Rx。 我希望 tree-shaking 能够优化并只选择需要的功能(需要验证) 正如 cmets 中提到的,tree-shaking 无济于事。所以这不是优化的方式。
public cache = new Rx.BehaviorSubject('');
或者您可以导入单个运算符。
这将优化您的应用以仅使用这些文件:
2) import { _______ } from 'rxjs/_________';
这种语法通常用于Rx本身或Observable等主对象,
可以使用此语法导入的关键字
Observable, Observer, BehaviorSubject, Subject, ReplaySubject
3) import 'rxjs/add/observable/__________';
Angular 5 更新
使用 Angular 5,它使用 rxjs 5.5.2+
import { empty } from 'rxjs/observable/empty';
import { concat} from 'rxjs/observable/concat';
这些通常直接与 Observable 一起使用。例如
Observable.from()
Observable.of()
可以使用此语法导入的其他此类关键字:
concat, defer, empty, forkJoin, from, fromPromise, if, interval, merge, of,
range, throw, timer, using, zip
4) import 'rxjs/add/operator/_________';
Angular 5 更新
使用 Angular 5,它使用 rxjs 5.5.2+
import { filter } from 'rxjs/operators/filter';
import { map } from 'rxjs/operators/map';
这些通常在 Observable 创建后进入流中。就像这段代码sn-p中的flatMap:
Observable.of([1,2,3,4])
.flatMap(arr => Observable.from(arr));
使用此语法的其他此类关键字:
audit, buffer, catch, combineAll, combineLatest, concat, count, debounce, delay,
distinct, do, every, expand, filter, finally, find , first, groupBy,
ignoreElements, isEmpty, last, let, map, max, merge, mergeMap, min, pluck,
publish, race, reduce, repeat, scan, skip, startWith, switch, switchMap, take,
takeUntil, throttle, timeout, toArray, toPromise, withLatestFrom, zip
平面地图:
flatMap 是mergeMap 的别名,所以我们需要导入mergeMap 来使用flatMap。
/add 导入注意事项:
我们只需要在整个项目中导入一次。所以建议在一个地方做。如果它们包含在多个文件中,并且其中一个被删除,则构建将因错误原因而失败。