У меня есть несколько настроек маршрутов в моем приложении для фотогалереи:
const routes: Routes = [
{ path: '', redirectTo: '/gallery', pathMatch: 'full' },
{ path: 'gallery', component: GalleryComponent, children: [
{ path: ':id', component: ImageFullViewComponent},
]},
Когда пользователь нажимает на изображение из компонента списка галереи здесь:
<ul class="container">
<li class="item-list-container"><app-image-item
class="image-item"
*ngFor="let imageEl of images"
[image]="imageEl"
(click)="onImageSelect(imageEl.id)"
></app-image-item>
</li>
</ul>
<router-outlet></router-outlet>
Мой метод onImageSelect выполняется из компонента списка галереи:
onImageSelect(id: number) {
this.router.navigate(['/gallery', id])
console.log(id);
}
Затем изображение должно отображаться на другом компоненте (компонент 'image-full-view'):
<div class="container">
<img class="image-full-view" [src]="selectedImage.imagePath" alt="Man Praying">
<p>{{ selectedImage.name }}</p>
</div>
Возвращается selectedImage из компонента 'image-full-view' здесь:
ngOnInit() {
const id = this.route.snapshot.paramMap['id'];
console.log(id);
this.selectedImage = this.galleryService.getImage(id);
console.log(this.selectedImage);
}
Это не работает, и я продолжаю перенаправляться обратно в компонент галереи. Я обнаружил, что при записи переменной id в консоль она возвращает "undefined". Он должен возвращать идентификатор, полученный из URL-пути. также появляется сообщение об ошибке «Не удается прочитать свойство 'imagePath' из неопределенного".