Using a behavior subject is a great way to store state for simple features. One problem with your current approach as written is that your subscription will live forever. This may cause problems in the future. So you can store it and unsubscribe on destroy. But the cleaner approach with observables is to use the async pipe in the template. This subscribes and unsubscribes automatically to your observable. If you need to manipulate the data along the way you can create a new observable in the component, piping the data using rxjs operators to shape your data for the ui, or filtering with combineLatest and another observable, still subscribing in the template. Other wise very good approach and nicely written!