2017-12-30 41 views
3

私は/注入注射を使用して単純なサービスがあります。ここに新しい角度はルートからのインポートを認識しますか?

import {Inject, Injectable} from '@angular/core'; 
import {APP_CONFIG} from '../../config/app-config.module'; 
import {AppConfig} from '../models/core/app-config.model'; 

@Injectable() 
export class AuthService { 
    constructor(@Inject(APP_CONFIG) private config:AppConfig) { 
    } 
} 

何も、しかし-as我々は知っている - 私はInject, Injectableをインポートする必要があります。

ルートモジュールにInject, Injectableをインポートしたとしても、ファイル内にインポートする必要がありました。

OK。

しかし、今私は、開発者がルートフォルダにいくつかのRXJS演算子をインポート状況(コードは私ではない)に面しています:

rxjs-imports.ts

import 'rxjs/add/operator/filter' 
import 'rxjs/add/operator/do' 
import 'rxjs/add/operator/map' 
import 'rxjs/add/operator/catch' 
import 'rxjs/add/operator/shareReplay' 
import 'rxjs/add/operator/distinctUntilChanged' 
import 'rxjs/add/operator/pluck' 

enter image description here

app.module.tsにファイルをインポートしました。

import './rxjs-imports'; 

そして今、彼は別のコンポーネント/サービスでそれらをインポートせずに、これらの演算子を使用することができます。

import {Observable} from 'rxjs/Observable'; 
//no imports for operators 
    public get<T>(name: string) :Observable<T>{ 
     return this.subj.pluck("d");  <---- how does it knows pluck ? 
    } 

質問:(!)私は理解していない

- それはどのように働いて来ますか?私は実際にObservableプロトタイプにパッチを適用し、指定事業者とそれを拡張し、そのため、あなたのコード内のすべてのObservableでこれらの演算子を使用することができることにあるファイルのものの結果をインポートするコンパイラがpluckオペレータに

答えて

1

import 'rxjs/add/operator/xxx'を追加するために叫ぶことが期待されましたあれから。

RxJSソースコードでは、どのように処理されているかを見ることができます(例:catchオペレータ)。

関連する問題