एक साझा सेवा सबसे अच्छा तरीका है
export class SharedService {
globalVar:string;
}
लेकिन आपको इसे पंजीकृत करते समय बहुत सावधानी बरतने की जरूरत है ताकि आप अपने पूरे आवेदन के लिए एक भी उदाहरण साझा कर सकें। आपको अपना आवेदन पंजीकृत करते समय इसे परिभाषित करने की आवश्यकता है:
bootstrap(AppComponent, [SharedService]);
लेकिन providersअपने घटकों की विशेषताओं के भीतर इसे फिर से परिभाषित करने के लिए नहीं :
@Component({
(...)
providers: [ SharedService ], // No
(...)
})
अन्यथा घटक और इसके उप घटकों के लिए आपकी सेवा का एक नया उदाहरण बनाया जाएगा।
आप इस सवाल पर एक नज़र डाल सकते हैं कि एंगुलर 2 में निर्भरता इंजेक्शन और श्रेणीबद्ध इंजेक्शन कैसे काम करते हैं:
आप नोटिस कर सकते हैं कि Observableजब आप अपने वैश्विक गुणों को बदलते हैं, तो आप अपने आवेदन के कुछ हिस्सों को सूचित करने के लिए सेवा में गुणों को भी परिभाषित कर सकते हैं:
export class SharedService {
globalVar:string;
globalVarUpdate:Observable<string>;
globalVarObserver:Observer;
constructor() {
this.globalVarUpdate = Observable.create((observer:Observer) => {
this.globalVarObserver = observer;
});
}
updateGlobalVar(newValue:string) {
this.globalVar = newValue;
this.globalVarObserver.next(this.globalVar);
}
}
अधिक विवरण के लिए यह प्रश्न देखें: