В моем приложении, чтобы я знал, что в моем маршруте навигации есть параметр, мне нужно настроить этот маршрут.
У меня есть компонент, который не должен отображаться в <router-outlet>
.
Этот компонент представляет собой панель, которая находится в углу экрана для отправки и получения сообщений.
const routes: Routes = [
{
path: 'chatView/:contactId',
component: ChatPanelComponent,
resolve: {
chat: ChatPanelService
},
canLoad: [GuardService],
},
];
Таким образом визуализируйте мой компонент в центре экрана, и я не хочу, чтобы это происходило.
В модуле, который я настроил так, чтобы при доступе к маршруту с помощью "chatView /: contactId"
я получал параметр для возврата данных этого контакта при загрузке приложения.
В моем компоненте:
ngOnInit(): void {
this._activatedRoute.params.subscribe((params: any) => {
if (params.contactId){
this._chatPanelService.getContato(params.contactId).then((contact) => {
this.toggleChat(contact);
});
}
});
}
Я хотел бы знать, есть ли способ получить этот параметр без необходимости визуализировать этот компонент в выводе <router-outlet>
, потому что этот компонент виден в углу экрана и, таким образом, визуализирует компонент дважды в моем приложении.
Мне нужен способ получить параметр без рендеринга компонента в центре корневого экрана приложения.
У меня есть компонент в левом углу экрана, который является Messenger моего приложения ... Когда я запускаю маршрут localhost: 4200 / chatView / contactId, он должен запустить приложение с открытым Messenger.
Этот компонент Messenger загружается внутри HTML.
Предположим, что все это происходит в компоненте «Панель инструментов» (или как там назван ваш родительский компонент), Вы должны создать 2 маршрута, оба указывают на "DashboardComponent"
const routes: Routes = [
{
path: 'dashboard',
component: DashboardComponent,
resolve: {
chat: ChatPanelService
},
canLoad: [GuardService],
},
{
path: 'dashboard/:contactId',
component: DashboardComponent,
resolve: {
chat: ChatPanelService
},
canLoad: [GuardService],
},
];
Тогда вы бы использовали свой
this._activatedRoute.params.subscribe
код для чтения параметра идентификатора контакта
Просто предположение ... больше похоже на ошибку дизайна, чем на проблему маршрутизации. Какую проблему вы на самом деле пытаетесь решить? Может быть где-то щелкнуть и панель должна загрузиться / открыться?