Сервис будет работать - потому что сервис будет инжектором, и если вы просто внедрите свой сервис в root module
, вы можете использовать его в любом модуле
Как это
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class HeroService {
constructor() { }
}
Вам не нужно добавлять службу ни в один из массивов module
provider
- provideIn
позаботится о внедрении в ваш корневой модуль
Наконец - вы думаете об использовании его во многихпомещает это тоже во время маршрутизации, чтобы вы могли вызывать эту услугу, когда происходит маршрутизация, и navigate
на конкретный components
- для доступа к какой-либо услуге перед маршрутизацией вы можете использовать route resolver
@Injectable()
class TeamResolver implements Resolve<Team> {
constructor(private backend: Backend) {}
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any>|Promise<any>|any {
return this.backend.fetchTeam(route.params.id);
}
}
Insted of this.backend.fetchTem()
метод, которым вы можете позвонить в свою службу - чтобы вы могли удалить свой компонент и просто сопоставить свою resolver
службу
{
path: 'team/:id',
component: TeamCmp,
resolve: {
team: TeamResolver
}
}
способ доступа к вашему resolver
в маршрутизации !!так как resolver - это также сервис, вы можете использовать его на любом из ваших маршрутов
Надеюсь, это поможет - счастливого кодирования !!