Мне нужно создать веб-портал, который будет встроен в iFrame.
Вот код, который я использую для загрузки портала
Конфигурация маршрутов
const routes: Routes = [
{
path: '',
redirectTo: '/dashboard',
pathMatch: 'full'
},
{
path: 'dashboard',
component: DashboardComponent
},
{
path: 'userinformation',
component: UserInformationComponent
}
];
Упрощенный index.html
<!doctype html>
<html lang="en">
<head>
<base href="/">
</head>
<body>
<frontend-root></frontend-root>
</body>
</html>
Компонент приложения
import { Component } from '@angular/core';
@Component({
selector: 'frontend-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'frontend';
}
HTML-код компонента "приложение"
<div style="text-align:center">
<h1>Portal Main Menu</h1>
</div>
<div class="container-fluid">
<div class="row">
<div class="col" style="background-color: greenyellow">
<left-menu></left-menu>
</div>
<div class="col-10" style="background-color: yellow">
<router-outlet></router-outlet>
</div>
</div>
</div>
Таким образом, файл app.component.html содержит «маршрутизатор-выход», где будет отображаться моя «панель инструментов» и/или моя «информация о пользователе».
Все работает нормально, за исключением того, что запускающее приложение, которому принадлежит iframe, отправит параметры на мою веб-страницу благодаря URL-адресу, подобному этому:
http://myportal.com/?language=fr&userId=12345
И я хотел бы получить эти параметры из моего AppComponent, который является загрузочным компонентом.
Я попытался использовать следующее решение для получения параметров запроса https://stackoverflow.com/a/39915434/1636492
Но поскольку у меня есть веб-страница «по умолчанию» и выход маршрутизатора, не расположенный в корне моей html-страницы, это не работает.
Вот проблемы, с которыми я столкнулся:
- Я не могу одновременно использовать компонент и redirectTo в определении маршрута (я использовал route.redirect в свой OnInit в AppComponent)
- В корневом примере автор поставил тег. Но при включении в моем приложении роутер-розетка там находиться не может.