Обновление компонента контейнера с данными, обновляемыми в выходе маршрутизатора - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть компонент, который содержит роутер-розетку. И контейнер, и целевой компонент маршрутизатора-выхода используют одни и те же данные и один и тот же сервис. Я использую целевой компонент розетки маршрутизатора для обновления данных. Я хочу, чтобы компонент контейнера обновлялся обновленными данными всякий раз, когда отправляется компонент выхода маршрутизатора, и обновляю данные. Я думал о том, чтобы сделать это, используя событие (эмиттер), как это делается со встроенным компонентом, но я думаю, что выход на маршрутизаторе не имеет такой точной возможности. Я склонен полагать, что решение есть в маршрутизации. Вот мои соответствующие части кода: Это розетка маршрутизатора в контейнере:

<router-outlet name="Data"></router-outlet>

Это часть кода в целевом компоненте розетки маршрутизатора, когда данные обновляются (приближаются к услуге):

onSubmit()
{
  let savedModel = this.prepareSavedModel();
  let sub = this.srv.Update(savedModel).subscribe(result => {
     // unsuccessful test to raise an event
     //this.notifyWhenSubmit.emit('Data Was updated');
     //Data is being updated

      this.navToParent(); // navigate back to the router outlet container 
   });

} Общая функция navToParent:

 navToParent(){
  let cmds = GetRoutePath(this.activatedRoute.parent);
  let params = GetQueryStringAsParams(this.activatedRoute);    
  let extras:NavigationExtras = { queryParams: params };
  this.router.navigate(cmds, extras);  
 } 

И где данные извлекаются из службы в контейнере компонента:

ngOnInit() {

  this.nav.service = this.service;
  this.service.Products.subscribe(result => this.initiateData(result));
...