Как я могу динамически позиционировать ‹router-outlet› в зависимости от вызываемого URL-адреса?

У меня есть сложный интерфейс, в котором у меня есть список динамических элементов (представьте себе виджет аккордеона) на странице (здесь о странице), и когда я вызываю этот URL:

/about/item/1

он «направляет» к одному из элементов аккордеона и загружает содержимое в выбранный элемент списка (один элемент аккордеона).

В частности, я хочу сделать следующее:

@Component({
    selector: 'app-about',
    template: `
      <ul>
          // dynamic list
          <li>
              <a [routerLink]="['/about/item', 1]">Item 1</a>
              // <router-outlet></router-outlet>
              // if url is /about/item/1
          </li>
          <li>
              <a [routerLink]="['/about/item', 2]">Item 2</a>
              // <router-outlet></router-outlet>
              // if url is /about/item/2
          </li>
      </ul>         
    `
})
export class AboutComponent { }

Я использую angular: 2.0.0-rc.4, angular/router: 3.0.0-beta.2

Это не кажется правильной практикой. Как я могу сделать это «угловым способом»?

Большое спасибо


person S.Galarneau    schedule 16.08.2016    source источник
comment
По-видимому, это проблема RC5, из-за которой вы не можете динамически разместить маршрутизатор-розетку из-за состояния гонки, как описано здесь. Надеюсь, что мой случай будет решен в следующем выпуске маршрутизатора. github.com/angular/angular/issues/9500   -  person S.Galarneau    schedule 19.08.2016


Ответы (1)


Вы можете указать имена маршрутизаторов-выходов и определить имя на маршруте, в который выход должен быть добавлен компонент.

<router-outlet name="a"></router-outlet>
<router-outlet name="b"></router-outlet>
{ path: 'a', component: A, outlet: 'a'}
{ path: 'b', component: B, outlet: 'b'}

Смотрите также

person Günter Zöchbauer    schedule 16.08.2016
comment
У меня есть динамический список элементов... могу ли я установить динамические маршруты? в моем компоненте о странице? - person S.Galarneau; 16.08.2016
comment
Я хочу точно такую ​​же розетку роутера (не хочу уточнять маршрут). Это больше зависит от того, где на странице расположен ‹router-outlet›, чем от самого его определения. - person S.Galarneau; 16.08.2016
comment
Я не знаю, как перемещать розетки-маршрутизаторы. - person Günter Zöchbauer; 16.08.2016