Я создаю приложение, в котором домашняя страница не имеет ту же структуру HTML, что и другие страницы.Я также использую mdbangular в качестве основы пользовательского интерфейса.Чтобы переключить шаблон с домашней страницы на другие страницы, я сделал следующее поведение маршрутизации (я резюмировал):
{ path: 'home', component: HomeComponent, data: { homePage: true } },
{ path: 'event-details', component: EventDetailsComponent },
{ path: 'login', component: LoginComponent, data: { fullPage: true } },
Взгляните на параметр данных.В файле макета я переключаюсь между html следующим образом:
<ng-container *ngIf="homePage === true">
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</ng-container>
<ng-container *ngIf="homePage === false && fullPage == false">
<!-- JUST A SAMPLE IMAGINE EXTRA HTML-->
<router-outlet (activate)='onActivate($event)' (deactivate)='onDeactivate($event)'></router-outlet>
</ng-container>
Когда я перемещаюсь между домашней страницей на любые другие страницы, я получаю сообщение об ошибке, КОТОРОЕ ИЗБЕГАЕТСЯ, ЕСЛИ Я ИСПОЛЬЗУЮ ТОЛЬКО ОДИН ROUTER-OUTLET INSTEADOF TWO.
Мой вопрос: почему я получаю ошибку, когда использую два маршрутизатора-выхода вместо одного?Есть ли правило или что-то с Angular6 +, которое я должен делать, когда я переключаюсь между роутером-розеткой таким образом?Как уничтожить или отсоединить предыдущую розетку маршрутизатора перед следующей?
Вот как я получаю параметр данных:
ngOnInit() {
this.activatedRoute.url.subscribe(() => {
const routeParams = this.activatedRoute.snapshot.firstChild.data;
if (routeParams.homePage === undefined || routeParams.homePage === null) {
this.homePage = false;
} else {
this.homePage = routeParams.homePage;
}
if (routeParams.fullPage === undefined || routeParams.fullPage === null) {
this.fullPage = false;
} else {
this.fullPage = routeParams.fullPage;
}
});
Вот объяснение ошибки с помощью mdbcarousel .Но это не ограничивается каруселью.Вот почему я сомневаюсь, что это больше англоязычная вещь, и именно поэтому я задаю вопрос здесь.
Спасибо за любое руководство,
Дэвид