захват события в нескольких компонентах в угловых 4 - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть один компонент, называемый адресом, который несколько раз отображается для домашнего и офисного адреса, при смене одного я хочу обновить другой, чтобы я написал sharedService и использовал eventemmiter.но он захватывает для одного и того же компонента, а не в другом .. я ожидаю 'в адрес' журнала два раза

@Injectable()
export class SharedService {
  onMainEvent: EventEmitter = new EventEmitter();
}


@Component({ ... })
export class AddressComponent {
  onMain: boolean = false;
  constructor(service: SharedService) {
    service.onMainEvent.subscribe(
      (onMain) => {
        this.onMain = onMain;
        console.log('in Address')
      }
   );
 }
updateAddress(onMain):void {
    this.service.onMainEvent.emit(onMain);
  }

}

1 Ответ

1 голос
/ 16 апреля 2019

Вам нужно сделать так, чтобы ваш сервис вводился как singleton :

для угловых 6 и верхних

@Injectable({providedIn: 'root'})
   export class SharedService {
     onMainEvent: EventEmitter = new EventEmitter();
   }

для нижнего:

@NgModule({
  ...
  providers: [UserService],
  ...
})

Более предпочтительный способ сделать это - использовать потоковую архитектуру, такую ​​как ngrx или ngxs для угловых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...