Сделать numbers
a BehaviorSubject<number>
вместо Observable<number>
.BehaviorSubjects можно использовать как в качестве наблюдателя, так и в качестве наблюдаемого.
Поэтому, если вы хотите передать ему новые значения, вы можете вызвать для него метод next
и передать новое значение.
Слушатель / подписчик этого BehaviorSubject получит новые значения.
Итак, вот изменения, которые вам нужно будет сделать:
В свой DataProvider
@Injectable()
export class DataProvider {
numbers$: BehaviorSubject<number> = new BehaviorSubject<number>(0);
}
И для вашего компонента:
@Component({
templateUrl: 'app.html'
})
export class MyApp {
subscription: any;
newNotificationCount;
constructor(
platform: Platform,
statusBar: StatusBar,
splashScreen: SplashScreen,
oneSignal: OneSignal,
dataCtrl: DataProvider
) {
this.subscription = this.dataCtrl.numbers$.subscribe(newNotificationCount => this.newNotificationCount = newNotificationCount);
}
private onPushReceived(payload: OSNotificationPayload) {
alert('Push recevied:' + payload.body);
this.dataCtrl.numbers$.next(666);
}
}
Хотя, поскольку значение обновляется в том же контроллере, я не думаю, что такая служба DataProvider потребуется.Но если вы хотите, чтобы и где-то в других местах показывалось уведомлениеCount, и хотите, чтобы количество постоянно оставалось неизменным, этого будет достаточно.