Событие подписки Angular 6 на конструктор вызывается несколько раз - PullRequest
0 голосов
/ 19 ноября 2018

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

Это мой код:

   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 раза это событие вызывается 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
    }]
  }
];

enter image description here

1 Ответ

0 голосов
/ 19 ноября 2018

Вы должны отписаться в OnDestroy ...

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

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

in onDestroy:

this.mySubscription.unsubscribe();

...