Невозможно сопоставить любые маршруты с дочерними маршрутами и новым маршрутизатором angular 2 RC1



Applicationcompent



import { Component } from '@angular/core';
import {Router, ROUTER_DIRECTIVES, Routes, ROUTER_PROVIDERS} from '@angular/router';
import {SchoolyearsComponent} from "./schoolyear/schoolyears.component";

@Component({
directives: [ROUTER_DIRECTIVES],
providers: [
ROUTER_PROVIDERS
],
templateUrl: './app/application.component.html',
styleUrls: ['./app/application.component.css']
})
@Routes([
{
path: '/',
component: SchoolyearsComponent,
},
])
export class ApplicationComponent {}


SchoolyearsComponent



import { Component } from '@angular/core';
import { Routes, ROUTER_DIRECTIVES } from '@angular/router';
import { SchoolyearsHomeComponent } from './schoolyears.home.component';
import { CreateSchoolyearComponent } from './create.schoolyear.component';

@Routes([
{
path: '',
component: SchoolyearsHomeComponent,
},
{
path: '/create',
component: CreateSchoolyearComponent
}
])
@Component({ template: `<router-outlet></router-outlet>`, directives: [ROUTER_DIRECTIVES]})
export class SchoolyearsComponent {
}


Школьные годы.деталь.html



<h3>Schoolyears</h3>

<div>
<a [routerLink]="['/create']">Create</a>
</div>

<table>
<tr *ngFor="let s of schoolyears" (click)="createSchoolyear()">
<td>{{s.id}}</td>
<td>{{s.name}}</td>
<td>{{s.startDate}}</td>
<td>{{s.endDate}}</td>
</tr>
</table>


Когда я нажимаю на ссылку" Создать", я получаю эту ошибку:



Ошибка



EXCEPTION: Error: Uncaught (in promise): Cannot match any routes. Current segment: 'create'. Available routes: ['/'].


Почему дочерний маршрут не загружен?
Почему /создать маршрут не доступны такие маршруты?

597   4  

4 ответов:

Обновить

Это больше не актуально в новой версии V3-beta.2 маршрутизатор.

Оригинал

Изменение

@Routes([
  {path: '', component: SchoolyearsHomeComponent},
  {path: '/create', component: CreateSchoolyearComponent}
])

К

@Routes([
  {path: '/create', component: CreateSchoolyearComponent},
  {path: '', component: SchoolyearsHomeComponent},
])

Порядок маршрутов в настоящее время является значительным. Самые конкретные маршруты должны быть первыми, наименее конкретные-последними. Это известная проблема, и она должна быть исправлена в ближайшее время.

Вы должны удалить Ведущий '/', новый маршрутизатор обрабатывает его за вас.

@Routes([
  {path: 'create', component: CreateSchoolyearComponent},
  {path: '', component: SchoolyearsHomeComponent},
])

Вам нужно ввести маршрутизатор в компонент приложения, примерно так:

 export class AppComponent {

  constructor(private router: Router) {}

}

Это обычно требуется, когда шаблон, связанный с этим компонентом, не использует Директиву <router-link>. Недавнее изменение на Angular не загружает компонент маршрутизатора, когда используется только <router-outlet>

Похоже, что порядок маршрутов, который мы упоминаем в @Routes, примечателен. Самые конкретные маршруты должны быть первыми, наименее конкретные-последними.В зависимости от этого измените свой @ Routes на этот

@Routes([
  {path: '/create', component: CreateSchoolyearComponent},
  {path: ' ', component: SchoolyearsHomeComponent},
])`

Comments

    Ничего не найдено.