Я новичок в изучении Angular и Typescript, поэтому у меня возникли некоторые проблемы. Я работаю над приложением, которое отображает список фотографий, позволяет нам создавать, редактировать и удалять уже существующие фотографии. Когда я хочу открыть страницу сведений для фотографии, которой не существует, помимо этого у меня есть активатор маршрута, который перенаправляет на страницу 404 not found, когда запрос недействителен, страница по-прежнему загружается без каких-либо данных. Вот сообщения об ошибках, которые я получаю «Не удалось загрузить ресурс: сервер ответил статусом 404 ()» и «core. js: 4197 ERROR HttpErrorResponseerror: {} headers: HttpHeaders {normalizedNames: Map (0), lazyUpdate : null, lazyInit: ƒ} сообщение: «Ответ об ошибке HTTP для https://jsonplaceholder.typicode.com/photos/5453453: 404 OK» имя: «HttpErrorResponse» ok: falsestatus: 404statusText: «OK» url: «https://jsonplaceholder.typicode.com/photos/5453453» proto : HttpResponseBase defaultErrorLogger @ core. js: 4197 ".
Вот мой активатор маршрута:
import { CanActivate, ActivatedRouteSnapshot, Router } from '@angular/router'
import { Injectable } from '@angular/core'
import { PostsService } from './posts.service'
@Injectable()
export class PostRouteActivator implements CanActivate{
constructor(private postService: PostsService, private router: Router ){
}
canActivate(route:ActivatedRouteSnapshot){
const postExists = !!this.postService.getPost(+route.params['id']);
console.log(postExists)
if (!postExists){
this.router.navigate(['/404']);
}
return postExists
}
}
Вот моя функция getPost из службы:
getPost(id: number){
return this.http.get<Post>(this.apiUrl + "/" + id);
}
Код для маршрута:
{ path: 'posts/edit/:id', component: EditPostComponent, canDeactivate: ['canDeactivateCreateEvent'], canActivate: [PostRouteActivator] },
Когда я печатаю значение const postExists = !!this.postService.getPost(+route.params['id']);
в консоли, кроме запрошенной фотографии / сообщения не существует, получаемое мной значение ИСТИННО. Кто-нибудь может мне помочь? введите описание изображения здесь