2017-04-20 10 views
7

पर पर्यावरण चर गुजर रहा है मैंने angualr2-library yeoman जनरेटर का उपयोग कर कंपनी आंतरिक लाइब्रेरी बनाई है।कोणीय 2 लाइब्रेरी

कुछ कोणीय सेवाएं हमारे वर्तमान अनुप्रयोगों में पर्यावरण चर का उपयोग कर रही हैं (प्रत्येक एनवी पर एपीआई एंडपॉइंट्स बदल दिए गए हैं)। मैं सोच रहा था कि वर्तमान पर्यावरण ऑब्जेक्ट को कोणीय 2 पुस्तकालय सेवाओं में पारित करने का सबसे अच्छा तरीका क्या है?

+0

क्या आपको इसके लिए उत्तर मिला? मैं वही काम करना चाहता हूं – leopic

उत्तर

2

यदि आप अभी भी समाधान ढूंढ रहे हैं, तो यहां बताया गया है कि मैंने जो कुछ आप पूछ रहे थे (कोणीय 4.2.4 का उपयोग करके) को पूरा किया।

अपने AppModule (या वह स्थान जहां आप अपनी लाइब्रेरी आयात करना चाहते हैं) में, विधि को पर कॉल करें। इस फ़ंक्शन की सहायता से, आप किसी भी कॉन्फ़िगरेशन मान को आपके लाइब्रेरी में पास कर सकते हैं, उदा। आपके ऐप का पर्यावरण।

import {environment} from "../environments/environment"; 
... 

@NgModule({ 
    declarations: [ 
     AppComponent 
    ], 
    imports: [ 
     BrowserModule, 
     ... 
     LibraryModule.forRoot(environment) 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

आप निश्चित रूप से LibraryModuleforRoot() विधि की पेशकश करने की जरूरत है। प्रदाता सरणी में आप सेवाओं को प्रदान कर सकते हैं, मूल्य and more। इस मामले में, 'env' सादगी के लिए दिए गए पर्यावरण वस्तु को रखने वाले टोकन के रूप में कार्य करता है। आप इसके बजाय InjectionToken का भी उपयोग कर सकते हैं।

@NgModule({ 
    ... 
}) 
export class LibraryModule { 

    public static forRoot(environment: any): ModuleWithProviders { 

     return { 
      ngModule: LibraryModule, 
      providers: [ 
       ImageService, 
       { 
        provide: 'env', // you can also use InjectionToken 
        useValue: environment 
       } 
      ] 
     }; 
    } 
} 

टोकन env के बाद से अब अपनी LibraryModule द्वारा प्रदान की जाती है, तो आप इसे अपने बच्चे को सेवाओं या घटकों के सभी में इंजेक्षन कर सकते हैं।

@Injectable() 
export class ImageService { 

    constructor(private http: Http, @Inject('env') private env) { 
    } 

    load(): Observable<any> { 
     // assume apiUrl exists in you app's environment: 
     return this.http.get(`${this.env.apiUrl}/images`) 
      .map(res => res.json()); 
    } 

} 

मुझे उम्मीद है कि इससे मदद मिलती है!