Paylaşılan hizmet en iyi yaklaşımdır
export class SharedService {
globalVar:string;
}
Ancak, başvurunuz için tek bir örneği paylaşabilmek için kaydolurken çok dikkatli olmanız gerekir. Başvurunuzu kaydederken tanımlamanız gerekir:
bootstrap(AppComponent, [SharedService]);
ancak providersbileşenlerinizin nitelikleri dahilinde tekrar tanımlamak için :
@Component({
(...)
providers: [ SharedService ], // No
(...)
})
Aksi takdirde, bileşen ve alt bileşenleri için hizmetinizin yeni bir örneği oluşturulur.
Angular2'de bağımlılık enjeksiyonu ve hiyerarşik enjektörlerin nasıl çalıştığı ile ilgili bu soruya göz atabilirsiniz:
Genel Observableözellikleriniz değiştiğinde, uygulamanızın bazı bölümlerini bildirmek için hizmette özellikler de tanımlayabileceğinizi fark edebilirsiniz :
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);
}
}
Daha fazla ayrıntı için bu soruya bakın: