簡體   English   中英

Angular承認從root進口?

[英]Angular recognize imports from root?

我有一個使用Inject / Injectable的簡單服務:

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) {
    }
}

這里沒什么新東西,但是我們知道 - 我必須導入Inject, Injectable

即使我在根模塊中導入Inject, Injectable - 仍然我必須在文件中導入它們。

好。

但是現在我面臨的情況(代碼不是我的)開發人員在根文件夾中導入了一些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'

在此輸入圖像描述

然后他在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 ?
    }

題:

我不明白 - 它是怎么來的? 我原以為編譯器會大喊大叫添加pluck運算符

import 'rxjs/add/operator/xxx'實際上修補了Observable原型,並使用指定的運算符對其進行擴展,因此導入文件的結果是,從那時起,您可以在代碼中的每個Observable中使用這些運算符。

您可以在RxJS源代碼中看到它是如何完成的,例如catch操作符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM