Спільний сервіс - найкращий підхід
export class SharedService {
globalVar:string;
}
Але вам потрібно бути дуже обережним при реєстрації, щоб мати змогу поділитися одним екземпляром для всієї вашої програми. Це потрібно визначити під час реєстрації вашої заявки:
bootstrap(AppComponent, [SharedService]);
але не визначати його знову в providers
атрибутах компонентів:
@Component({
(...)
providers: [ SharedService ], // No
(...)
})
Інакше буде створений новий примірник вашої послуги для компонента та його підкомпонентів.
Ви можете ознайомитись із цим питанням щодо того, як працюють ін'єкції залежності та ієрархічні інжектори в Angular2:
Ви можете помітити, що ви також можете визначити 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);
}
}
Дивіться це питання для більш детальної інформації: