ActivatedRoute data.path возвращает undefined, в случае обращения на несуществующий route?

Когда вы обращаетесь к несуществующему пути, Angular Router не может найти соответствующий маршрут и, следовательно, не может получить данные из ActivatedRoute для этого маршрута. В результате получается, что data.path возвращает undefined.

Однако, чтобы избежать такой ситуации и обрабатывать несуществующие пути, вы можете использовать Guard (хранитель) в Angular Router.

Guard - это специальный интерфейс в Angular, который позволяет вам проверить, можно ли активировать маршрут перед его загрузкой. Вы можете создать Guard, который будет проверять существование маршрута, и в случае его отсутствия перенаправить пользователя на определенную страницу или вывести сообщение об ошибке.

Вот пример простого Guard, который будет проверять, существует ли маршрут, и перенаправлять пользователя на другую страницу при необходимости:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class RouteExistsGuard implements CanActivate {

  constructor(private router: Router) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    // Проверяем, существует ли маршрут
    if (route.data && route.data.path) {
      return true;
    } else {
      // Здесь можно выполнить перенаправление на определенную страницу
      this.router.navigate(['/not-found']);
      return false;
    }
  }
}

Затем вы можете добавить этот Guard к определенному маршруту в вашем файле маршрутизации (например, app-routing.module.ts):

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { HomeComponent } from './home/home.component';
import { NotFoundComponent } from './not-found/not-found.component';
import { RouteExistsGuard } from './route-exists.guard';

const routes: Routes = [
  { path: '', component: HomeComponent },
  { path: '**', component: NotFoundComponent, canActivate: [RouteExistsGuard] }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

В этом примере, если маршрут не существует, пользователь будет перенаправлен на NotFoundComponent.

Надеюсь, эта информация помогла вам понять, как обрабатывать несуществующие маршруты в Angular и получать правильные данные из ActivatedRoute для существующих маршрутов.