2017-04-23 21 views
0

發展的角度/ CLI應用程序,我在某些時候注意到未能明確導入可觀察到的運營商,如:可觀察到運營商的明確進口 - 我想他們回來

import { Observable } from 'rxjs/Observable'; 
// import 'rxjs/add/operator/zip'; 
// import 'rxjs/add/operator/mergeMap'; 

實際上不會阻止代碼編譯。過去的情況是這樣,但我不確定是什麼導致了更改,現在註釋掉導入並不會停止編譯。

這是配置某處或我的代碼不好的條件?我仔細檢查 - 沒有像import {Observable} from 'rxjs'這樣的單一貪婪導入,可能會一次性將全部內容全部包括在內。

如何在需要顯式導入單個操作員時恢復先前的行爲?我有點喜歡這個需求,因爲它表明只有相關的包被導入到輸出應用中。

+0

如果您在另一個模塊中導入相同的運算符,它將用於整個項目。建議只將它們全部導入到'app.module.ts'文件中。 – Fabricio

+0

其實,我已經註釋掉**所有** rxjs運營商的進口和應用程序仍然編譯... – user776686

+0

也許他們已經被其他庫導入... – Maxime

回答

1

不包括整個rxjs - 它是巨大的。

有兩種補救措施,我用:

  • 在我的IDE(webstorm)也不允許以 包括整個rxjs的配置。

  • 所有運營商包括組合在rxjs-extension.ts文件這樣的:

    import 'rxjs/add/observable/of'; 
    import 'rxjs/add/observable/forkJoin'; 
    import 'rxjs/add/observable/throw'; 
    import 'rxjs/add/observable/empty'; 
    
    import 'rxjs/add/operator/catch'; 
    import 'rxjs/add/operator/concat'; 
    import 'rxjs/add/operator/delay'; 
    import 'rxjs/add/operator/distinctUntilChanged'; 
    import 'rxjs/add/operator/do'; 
    import 'rxjs/add/operator/filter'; 
    import 'rxjs/add/operator/finally'; 
    import 'rxjs/add/operator/first'; 
    import 'rxjs/add/operator/map'; 
    import 'rxjs/add/operator/mergeMap'; 
    import 'rxjs/add/operator/pairwise'; 
    import 'rxjs/add/operator/pluck'; 
    import 'rxjs/add/operator/publishLast'; 
    import 'rxjs/add/operator/skip'; 
    import 'rxjs/add/operator/switchMap'; 
    import 'rxjs/add/operator/switchMapTo'; 
    import 'rxjs/add/operator/take'; 
    import 'rxjs/add/operator/takeWhile'; 
    import 'rxjs/add/operator/toArray'; 
    

之後,我包括app.module.ts此文件,並test.ts文件。

+0

其實,我盡我所能不包括整個rxjs:我知道自WS 2017.1.1以來的「黑名單」,甚至在我反覆搜索貪婪的'rxjs'導入之前。只是當我評論運營商導入時,該應用仍然有效,這是我的擔憂。感謝您提供有關匯入一個文件的建議。 – user776686