Angular和RxJS导入

Thi*_*ibs 11 intellij-idea webstorm rxjs5 angular

我总是知道Observable单独导入我的运算符来限制加载时间.但是我今天注意到了一些事情,我希望有人可以向我解释.

我在Webpack上使用IntelliJ/WebStorm.

让我们在我的网页上说ngOnInit我有一个http电话:

 ngOnInit() {  
        this.http.get('https//:google.com').map(e => e);
 }
Run Code Online (Sandbox Code Playgroud)

如果我不导入map运算符,编译器会抱怨,所以我像这样导入它:

import 'rxjs/add/operator/map';
Run Code Online (Sandbox Code Playgroud)

一切都在世界上很好.直到我需要使用Observable.所以,我会加一个.

 ngOnInit() {
        let test = Observable.create(subscriber => {
            return null;
        });

        this.http.get('https//:google.com').map(e => e);
 }
Run Code Online (Sandbox Code Playgroud)

现在编译器可以理解地抱怨它找不到Observable,所以我让IntelliJ/WebStorm为我导入它并将其添加到我的文件顶部:

import {Observable} from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

一切都好了.但是,这个新的导入似乎使地图导入无关紧要.我的意思是,如果我删除了地图导入并且只留下了Observable,那么所有编译都很好......

但是,如果我指定像这样导入Observable:

import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

然后我必须为地图操作员重新添加导入...

我导入我的Observable时是否导入了所有RxJS?

import {Observable} from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

如果是这样,我怎么能告诉IntelliJ不这样做并仅导入类?

FRE*_*CIA 13

为什么没有一个带有所需rxjs可观察类扩展和运算符的文件(例如:rxjs-extensions.ts)?

// Observable class extensions
import 'rxjs/add/observable/throw';

// Observable operators
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';
Run Code Online (Sandbox Code Playgroud)

然后在您的主模块(ex app.module.ts)中从此文件导入:

import './rxjs-extensions';
Run Code Online (Sandbox Code Playgroud)

在你的主要组件(例如:app.component.ts)中只需导入Observavle:

import { Observable } from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

这就是主角度教程中的内容.