Показывать пользователю маршруты, отличные от фактических в angular

#node.js #angular #express #angular-fullstack

#node.js #angular #экспресс #angular-полный пакет

Вопрос:

Я работаю над веб-разработкой с полным стеком, используя Angular, Node (Express) и MySQL. Я хочу показать пользователю несколько иной маршрут, чем он есть на самом деле. Как я могу это сделать? Например, это моя страница панели мониторинга.

 http://localhost:4200/#/dashboard
 

Я хочу, чтобы это рассматривалось как что-то другое для пользователя, например:

 http://localhost:4200/#/Welcome 
OR
http://localhost:4200/#/Welcome/LandingPage
 

Это означает, что доступ к этой странице возможен только при вводе URL-адреса:

  http://localhost:4200/#/dashboard
 

и, если пользователь пытается получить доступ к этой странице, введя URL-адрес, который ему показывается:

 http://localhost:4200/#/Welcome 
OR
http://localhost:4200/#/Welcome/LandingPage
 

затем он получает сообщение об ошибке.

Я сделал все это в app.routing.ts. Я просто хочу спросить, как я могу сделать вышеупомянутое. Чтобы показать пользователю этот маршрут, которого на самом деле не существует.

Для дальнейшего пояснения: когда пользователь откроет страницу, она будет показана ему как «localhost: 4200 / # / Welcome». Я хочу просто показать пользователю этот маршрут. В моем коде он фактически должен оставаться приборной панелью. Проще говоря, когда пользователь вводит URL: «localhost: 4200 / # / Welcome», он должен выдать ошибку, потому что в коде такого маршрута не существует. Это было просто показано пользователю как своего рода поддельный маршрут. На самом деле это должно быть «localhost: 4200 / # / dashboard», но отображается пользователю как «localhost: 4200 / # / Welcome»

Комментарии:

1. в вашем routes.module вам нужно будет обновить path: ‘что должен видеть клиент’ с помощью component: component, на который он должен направлять. например { путь: приветствие, компонент: dashboardcomponent}

2. Вы правы. Я могу это сделать. Но, когда пользователь откроет страницу, она будет показана ему как » localhost: 4200 / # / Welcome «. Я хочу просто показать пользователю этот маршрут. В моем коде он фактически должен оставаться приборной панелью. Проще говоря, когда пользователь вводит URL: » localhost: 4200 / # / Welcome «, он выдает ошибку, потому что в коде такого маршрута не существует. Это было просто показано пользователю как своего рода поддельный маршрут. На самом деле это должно быть » localhost: 4200 / # / dashboard «, но отображается пользователю как » localhost: 4200 / # / Welcome » 🙂

3. Моим лучшим предложением было бы добавить оба варианта в ваш модуль маршрутизации. Это позволяет пользователю вводить любое из значений.

4. @LotteLemmens Я хочу скрыть свой реальный маршрут от пользователя. Показывать ему только поддельный маршрут. Я не использую route guard, но пытаюсь таким образом защитить свои маршруты. Отображение поддельных маршрутов для пользователя, которые недоступны при попытке доступа по URL. Поскольку я хочу назвать их уникально и отличаться в моем коде от того, что показано пользователю.

5. При обычной маршрутизации это невозможно сделать. URL-адрес и их соответствующие компоненты ЯВЛЯЮТСЯ навигацией в Angular. Возможно, вы можете перезаписать httpinterceptor, а затем перейти к другому компоненту без перенаправления, но я не могу вам здесь помочь

Ответ №1:

Я думаю, возможно, использование location поможет, если я правильно понял вопрос.

 constructor(private location: Location){}
replaceState(){ 
  this.location.replaceState("/Welcome");
}
 

Вам нужно будет импортировать модуль Location:

 import {Location} from '@angular/common';