Есть ли какое-то промежуточное программное обеспечение, которое я должен написать, которое может извлечь Car, соответствующий идентификатору, предоставленному в качестве параметра URL, а затем передать его CarDetailComponent, так что упомянутому компоненту никогда не нужно делать запрос для объекта Car сам?
Я считаю, что вы ищете распознаватель маршрутов . При маршрутизации распознаватель может перехватить параметр URL-адреса, использовать его для извлечения объекта и сделать его доступным для всех компонентов, которые отображаются по этому маршруту. Например ...
app-routing.module.ts
{
path: 'widgets',
component: WidgetsComponent,
},
{
path: 'widgets/:id',
resolve: { widget: WidgetResolver },
children: [
{ path: '', redirectTo: 'details', pathMatch: 'prefix' },
{
path: 'details',
component: WidgetDetailsComponent,
},
{ path: 'edit', component: WidgetFormComponent }
]
},
widget.resolver.ts
@Injectable()
export class WidgetResolver implements Resolve<Widget> {
constructor(private service: WidgetService) { }
resolve(route: ActivatedRouteSnapshot): Observable<any> {
return this.service.getById(parseInt(route.paramMap.get('id') || ''))
.pipe(first()); // must complete to resolve route
}
}
widget-details.component.ts
@Component({
selector: 'app-widget-details',
templateUrl: './widget-details.component.html',
styleUrls: ['./widget-details.component.scss'],
})
export class WidgetDetailsComponent {
widget$ = this.route.data.pipe(
pluck('widget')
);
constructor(
private route: ActivatedRoute
) { }
}