Я использую другой модуль, поэтому его можно использовать в ленивых загружаемых модулях. вот мой файл службы.Я хочу использовать rxjs для обнаружения изменения значения в нескольких компонентах. Но он показывает только изменения в компоненте, который меняет его.
import {NgModule, Injectable } from '@angular/core'
import {Subject} from 'rxjs/Subject';
@Injectable()
export class ChangeEventService {
public invokeEvent:Subject<any> = new Subject();
// localId:any = { name:'', eventId:0, orgId:0};
constructor() {
}
public callComponent(currentId:any):void {
console.log("Invoked");
this.invokeEvent.next({localId:currentId});
}
}
@NgModule({
imports: [ ],
exports : [
],
providers: [ ChangeEventService ],
})
export class ChangeEventModule { }
Подписка на тему Rxjs только изменения в компоненте/сервиса, который изменяет его.
export class xyz {
constructor(private change: ChangeEventService) {
this.change.invokeEvent.subscribe((value) => {
this.event = value.localId;
console.log("I'm chnaged...!!");
});
}
anyFunction(eventdata:any) {
this.change.callComponent(eventdata);
}
}
Я получаю обновленное значение только в компоненте, изменяющие значение InvokeEvent.
Можете ли вы проверить, как часто выполняется конструктор. У вас может быть несколько экземпляров «ChangeEventService». – Philipp
является 'this.change.invokeEvent.callComponent (данныеСобытия);' предполагают, чтобы быть 'this.change.callComponent (данныеСобытия);' – shusson
@shusson: +1. Кроме того, вы уверены, что «ChangeEventService» является синглом? Объявлено ли это в «NgModule.providers» модуля, который ** загружен ** (vs lazily-load)? – AngularChef