Как поменять активную розетку первичного роутера на лету в Angular (2+)? - PullRequest
0 голосов
/ 03 января 2019

У меня есть система входа в систему (okta), которая авторизуется с помощью перенаправления, поэтому моему компоненту верхнего уровня требуется розетка маршрутизатора, чтобы он мог правильно обрабатывать перенаправление сервера после того, как я вошел в систему. Он перенаправляет на localhost: 4200 / callback и т. Д.

Я также использую коммерческий шаблон (PrimeNg) со встроенным выходом маршрутизатора, встроенным в его макет.

Итак, когда я не вошел в систему, я хочу использовать одну розетку маршрутизатора, а когда я вошел в систему, я хочу, чтобы она переключилась на другую, но обе они должны действовать так, как если бы они были основной розеткой, когда они активны.

Вот код в тесте "app.component.html", чтобы вы могли видеть, что я делаю. Я использую * ngIf для переключения розетки маршрутизатора.

<div *ngIf="isLoggedIn">
    <button (click)="logout()"> Logout </button>
    <button routerLink="/protected"> Protected </button>
    <router-outlet></router-outlet>
</div>
<div *ngIf="!isLoggedIn">
    <button (click)="login()"> Login </button>
    <router-outlet></router-outlet>
</div>

Это работает по моде, но розетка маршрутизатора не обновляется с помощью перемещаемых компонентов. URL обновляется, но содержимое не загружается, как будто розетка маршрутизатора «отключена».

...