I\'m trying to create my own observable service but after i get the initial data from the service, any updates to the service aren\'t propagated to any subscribers. Service
Every time you emit a value, you should create a new object instead of emitting the same mutated object. That will protect you from change detection issues. It'd be better to always assign a new Object to this.keys
when you change it though.
this.data.next([...this.keys]);
You can use asObservable()
here
public getData(): Observable<number[]> {
return this.data.asObservable();
}
Also check for what Günter Zöchbauer said. Are you providing the service as a singleton?
I faced the same issue at some point. It's likely the reason is that your service is not a singleton, i.e. that every subscriber gets a new instance. Contrary to Angular 1, in A2 services are not singletons.
If you want to have one instance of the service shared by multiple services/components, put it in providers
of your parent @Component
or @NgModule
.
@NgModule({
declarations: [],
imports: [],
bootstrap: [AppComponent],
providers: [DataService]
})
export class AppModule {
}