Угловой 2-7: Как лучше всего скрывать / показывать компоненты на одном и том же URL? - PullRequest
2 голосов
/ 09 мая 2019

Из-за некоторых платформенных ограничений там я не могу использовать маршрутизацию - разные URL для перехода к разным компонентам.

Другими словами, есть только http://localhost.com/default

NO http://localhost.com/user

NO http://localhost.com/items

Мне удается поместить все дочерние компоненты в AppComponent как родительские и использовать переменные, чтобы указать, какой дочерний компонент следует скрыть и показать действиями пользовательского интерфейса для управления макетом.

<app-user-panel
  [hidden]="!showUser"
  (closed)="onUserPanelClosed($event)"
></app-user-panel>

<app-items-panel
  [hidden]="!showItems"
  (closed)="onItemsPanelClosed($event)"
></app-items-panel>

Поскольку огромные компоненты собраны воедино, код в файле ts запутан.

Мне интересно, есть ли лучший способ НЕ использовать логические значения и ngIf для отображения или скрытия дочерних компонентов?

РЕШЕНИЕ 1. Есть ли в Routing расширенная функция для перехода к различным компонентам по одному и тому же URL-адресу?

РЕЗУЛЬТАТ 2: Использовать параметры маршрутизации?

1 Ответ

3 голосов
/ 09 мая 2019

РЕШЕНИЕ 1: есть ли в Routing расширенная функция для перехода к разные компоненты на одном и том же URL?

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

Пример: http://localhost.com/#/user Ваш сервер не будет пытаться вернуть страницу для пользователя, а angular оценит ее и отобразит ваш пользовательский экран.

Единственное, что вам нужно сделать, это запустить useHash с true

@NgModule({
  imports: [ RouterModule.forRoot(routes, {useHash: true})],
  exports: [ RouterModule ]
})

Это было бы лучшим решением, чем поиск более чистого способа скрытия и отображения компонентов на одной странице.

...