Вам нужно использовать распознаватель, чтобы сделать это. Резольвер - это класс, который реализует resolve<resolveType>
и использует один метод resolve
. В функции resolve
вы можете использовать внедренный сервис для возврата наблюдаемой с вашими данными:
@Injectable({ providedIn: 'root' })
export class userResolver implements Resolve<anu> {
constructor(private userService: UserService) {}
resolve(route: ActivatedRouteSnapshot): Observable<any>| {
return this.userService.getUserById(route.paramMap.get('id'));
}
}
В этом примере мы внедряем userService
и используем метод для возврата к наблюдаемой. Обратите внимание, что я использую any
, чтобы упростить здесь. В этом случае параметры route
содержат текущий маршрут, который мы пытаемся найти. Допустим, /user/1
. Мы можем использовать этот объект для получения информации о текущем маршруте, например, идентификатор пользователя.
Наш распознаватель может затем использоваться в маршруте конкретной страницы. Он будет запущен перед функцией onInit
на странице. Чтобы добавить его на страницу, вам нужно вызвать функцию в resolve
части ее маршрута:
let route = [
{
path: 'user/:id',
component: UserComponent,
resolve: {
hero /* the name we will use in the onInit to get the data */: Resolver /* our resolver */
}
}
])
...
Затем мы можем получить доступ к разрешенным данным в функции onInit
:
export class UserComponent {
...
constructor(private route: ActivatedRoute) {}
ngOnInit(){
this.route.subscribe(data => {
// we do something with our data.
});
}
}
Более подробную информацию вы можете получить в официальных документах Angular ;