Angular 6 событие подписки на конструктор, вызываемый несколько раз

В моем компоненте конструктора (дочерний компонент) я добавляю простое событие

Это мой код:

   this._modalService.onHidden.subscribe(
      result => {
        console.log("_modalService.onHidden");
        if(this.shown){
          this.shown = false;
          this._router.navigate(['.'], { relativeTo: this._route.parent });
        }
      }, error => console.log(error));

При открытии этой страницы в первый раз это событие вызывалось только одно, но при повторном входе на страницу это событие вызывается дважды, а при трехкратном входе это событие вызывается 3 раза и т. Д.

[Кстати, это происходит также, если я перемещаю код в событие ngOnInit, и это происходит также в другой канал хранилища ngrx событий, который событие вызывается несколько раз]

Это мой маршрут (может, в этом и причина)

const routes: Routes = [
  {
    path:':id' ,component:EventComponent,
    children:[
      {
      path:'o/:file'
      ,component:EventDetailComponent
    }]
  },
  {
    path:':id/:sub' ,component:EventComponent,
    children:[{
      path:'o/:file'
      ,component:EventDetailComponent
    }]
  }
];

введите здесь описание изображения


person 24sharon    schedule 19.11.2018    source источник


Ответы (1)


вы должны отказаться от подписки в _1 _...

в конструкторе:

this.mySubscription = this._modalService.onHidden.subscribe(...);

in onDestroy:

this.mySubscription.unsubscribe();

person dee zg    schedule 19.11.2018