I have searched for similar questions in SO and I have not found any that addresses my specific case. There are many techniques to share data between angular components, and I h
use service that is provided by main application file and then inject it whenever you want to get/set data that will be available in whole app
main.app.ts
@Component({
...
providers:[yourDataService]
...
})
other components
import {yourDataService} from '...';
@Component({
...
providers:[]// we must use provider from main file
...
})
export class someComponent{
contructor(private myData:yourDataService){}
}
it is important to use provider from main app file because if you provide service in each component you will have another instances of your service and of course different data in each service
you can also use observables to be notified when some data has changed
for more info look at hierarchical injections or tree injector