Как работают вспомогательные маршруты в Angular2 RC5/Router3 RC1?

Вряд ли есть какая-либо информация о вспомогательных маршрутах в Интернете, тем более, что для RC5/RC1, я надеюсь, что кто-то здесь, на SO, смог заставить их работать (они должны быть исправлены, или я так слышал, но это об этом),

Я получил следующее объявление маршрутизации:

import {
    RouterModule,
    Routes
} from '@angular/router';

import { ContactsComponent } from './contacts.component';
import { NewContactComponent } from './new-contact.component';

const contactsRoutes: Routes = [
    { path: '', component: ContactsComponent },
    { path: 'new', component: NewContactsComponent, outlet: 'form' }
];

export const contactsRouting = RouterModule.forChild(contactsRoutes);

Вот routerLink а также outlet на ContactsComponent:

<a [routerLink]="['.', 'form:new']"> 
    <button md-fab class="md-fab">
        <md-icon class="md-24">add</md-icon>
    </button>
</a>
<router-outlet name="form"></router-outlet>

Однако это приводит только к сообщениям об ошибках, таким как

Ошибка: не удается сопоставить ни один маршрут: "контакты / форма%3Anew"

У кого-нибудь есть рабочий пример для Angular2 RC5/Router3 RC1?

2 ответа

Я наконец заставил это работать (используйте источник, Люк), пока что с изюминкой, но я продолжу исследовать, пока не найду полное решение.

Учитывая эту настройку маршрутизации

const appRoutes: Routes = [
    { path: '', redirectTo: 'welcome', pathMatch: 'full' },
    { path: 'welcome', component: WelcomeComponent },
    { path: 'employee/:id', component: EmployeeDetailComponent }
    { path: 'chat', component: ChatComponent, outlet: 'aux' }
];

то есть с помощью вспомогательного маршрута в корневом пути (об этом я упоминал) я могу написать

<a [routerLink]="['/', { outlets: { primary: 'employee/14', aux: 'chat' } }]"

и это переводится на этот маршрут:

/employee/14(aux:chat)

Нажав на эту ссылку, вы фактически визуализируете компонент в розетке,

import { Component } from '@angular/core';

@Component({
    selector: 'my-app',
    template: '<router-outlet></router-outlet><router-outlet name="aux"></router-outlet>'
})
export class AppComponent {}

Полный PLNKR можно найти здесь.

Как только я получу это для дочерних компонентов, я обновлю этот ответ.

Насколько я знаю, это должно быть что-то вроде

<a [routerLink]="[{ outlets: { 'aux': ['/employee/14/chat'] } }]">

Смотрите также https://angular.io/docs/ts/latest/api/router/index/RouterLink-directive.html

Другие вопросы по тегам