Как сделать акцию для активации маршрута в angular? - PullRequest
1 голос
/ 07 августа 2020

Я использую Angular 9 , в моем приложении есть 4 компонента, которые имеют некоторый избыточный код для активации маршрута.

Приведенный ниже фрагмент кода используется в 6 компонентах: -

 this.activatedRoute.queryParams.subscribe(params => {
      this.selectedDepart = params['department'];
      this.access = this.selectedDepart === 'admin' ? 'full' : this.getAccess(this.selectedDepart);
      this.fetchData();
    });

Я хочу что-то, чтобы поместить приведенный выше код в одно место и сделать его общей службой. Итак, я могу использовать его в разных компонентах.

Не могу понять, как создать для него общий сервис и как использовать его в разных компонентах?

1 Ответ

1 голос
/ 07 августа 2020

Вы можете создать shared.service.ts, и там у вас могут быть методы, например, getParamsData() и getAccess(), также вы можете перейти к общей службе

служба может быть как

@Injectable({
    providedIn: 'root'
})
export class SharedService{
   getParamsData(){
       this.activatedRoute.queryParams.subscribe(params => {
              this.selectedDepart = params['department'];
              let access = this.selectedDepart === 'admin' ? 'full' : 
              this.getAccess(this.selectedDepart);
              return access;
    });
  }
}

А в компоненте можно так:

export class YourComponent implements OnInit{
  constructor(
     private sharedService:SharedService
  ){}

  ngOnInit(){
    this.access=this.sharedServie.getParamsData();
  }

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