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