2016-05-11 15 views
0

Nach dem Upgrade auf RC1 von Beta habe ich einige Probleme mit dem Routing. Einige der Routen funktionieren, während andere mir die folgende Ausnahme geben:angular2 RC1 Einige Router haben keinen Provider

Error: Uncaught (in promise): EXCEPTION: Error in :0:0 
ORIGINAL EXCEPTION: No provider for Router! 
ORIGINAL STACKTRACE: 
Error: DI Exception 

Hier ist meine app.component.ts:

@Component({ 
    selector: 'my-app', 
    templateUrl: 'app/app.component.html', 
    styleUrls: ['app/app.component.css'], 
    encapsulation: ViewEncapsulation.None, 
    directives: [ROUTER_DIRECTIVES, DROPDOWN_DIRECTIVES, RouterOutlet], 
    providers: [ 
    HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    StudentService, 
    ReportService, 
    UserService, 
    ClassService, 
    PropertiesService 
] 
}) 

@Routes([ 
{ // child route 
    path: '/admin/...', 
    name: 'Admin', 
    component: AdministratorComponent 
}, 
{ path: '*', name: 'Home', component: HomeComponent }, 
{ path: '/filter', name: 'Filter', component: FilterComponent }, 
{ path: '/profile',  name: 'Profile', component: ProfileComponent }, 
{ path: '/credits', name: 'Credits', component: ReportComponent}, 
{ path: '/approve', name: 'Approve', component: ApproveComponent}, 
{ path: '/filter-class', name: 'FilterClass', component: FilterClassComponent}, 
{ path: '/class', name: 'Class', component: ClassComponent} 

]) 

Hier ist die administrator.component.ts, die das Kind Routing hat

@Component({ 
selector: 'my-administrator', 
templateUrl: 'app/components/administrator/administrator.component.html', 
//styleUrls: ['app/administrator.component.css'], 
encapsulation: ViewEncapsulation.None, 
directives: [RouterOutlet, ROUTER_DIRECTIVES], 
providers: [] 

}) 

@Routes([ 
{path: '/profile/:id', name: 'Profile', component: ProfileComponent}, 
{path: '/approve/:id', name: 'Approve', component: ApproveComponent}, 
{path: '/filter', name: 'Filter', component: FilterComponent}, 
{path: '/filter-class', name: 'FilterClass', component: FilterClassComponent}, 
{path: '/class/:id', name: 'Class', component: ClassComponent}, 
]) 

ich habe die folgenden hTML-Code enthalten:

<a class="list-group-item" href="javascript:void(0)" [routerLink]="['Home']">Home</a> 

Routing funktioniert^

<a class="list-group-item" *ngIf="user.isAdmin" [class.active]="getLinkStyle('/admin/')" href="javascript:void(0)" [routerLink]="['Admin', 'Filter']">Student Management<span class="sr-only">(current)</span></a> 

Routing nicht^

<a class="list-group-item" *ngIf="!user.isAdmin" [class.active]="getLinkStyle('/profile')" href="javascript:void(0)" [routerLink]="['Profile',{id: userConst.user.studentId}]">My Profile</a> 

Routing

<a class="list-group-item" *ngIf="!user.isAdmin" [class.active]="getLinkStyle('/credits')" href="javascript:void(0)" [routerLink]="['Credits']">My Credits</a> 

Routing funktioniert^

<a class="list-group-item" *ngIf="user.isAdmin" [class.active]="getLinkStyle('/filter-class')" href="javascript:void(0)" [routerLink]="['FilterClass']">Class Management</a> 

Routing funktioniert^funktioniert funktioniert nicht

+0

Es ist wichtig, in denen die Komponente der '[Router]' sind . Dies ist nicht offensichtlich aus dem Code in Ihrer Frage. –

+0

Der routerLink wird mit @Routes basierend auf Name abgeglichen. – raeker

Antwort

0
  • nicht hinzufügen ROUTER_PROVIDERS auf jeder Komponente, nur einmal an der Wurzel-Komponente.
  • /... im Pfad: '/admin/...', für Kinder Routen funktionierte nicht für mich in rc.x. Versuchen Sie, /...
  • Routen in dem neuen Router zu entfernen, haben Sie keine name. Nur path und component (weitere sind geplant)
  • mit dem neuen Router die [routerLink] s eine Liste der Pfadsegmente nehmen, keine Namen [routerLink]="['/admin', 'filter'] oder [routerLink]="['Admin/Filter']
+0

Ah, richtig, ich habe einfach etwas versucht, damit es funktioniert. Es oder nicht zu haben, schien keinen Unterschied zu machen ... – raeker

+0

'/ ...' in 'Pfad: '/ admin/...',' für untergeordnete Routen funktionierte bei mir in rc.x nicht . Versuchen Sie, es zu entfernen –

+0

Es gibt auch keine 'name' in den neuen Routerrouten rc.x –

Verwandte Themen