2016-06-01 8 views
7

ApplicationComponentबच्चे मार्गों और नए कोणीय 2 RC1 रूटर के साथ किसी भी मार्गों SchoolyearsComponent से मेल नहीं कर सकते हैं

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 {} 

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 { 
} 

schoolyears.component.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> 

जब मैं "बनाएँ" routerLink पर क्लिक करें मैं इस त्रुटि मिलती है:

त्रुटि

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

बच्चे मार्ग क्यों लोड नहीं है? मार्गों के उपलब्ध सरणी में रूट बनाने का तरीका क्यों नहीं है?

उत्तर

7

अद्यतन

इस नई वी 3-beta.2 रूटर में अब प्रासंगिक नहीं है कोणीय करने के लिए हाल ही में एक परिवर्तन रूटर घटक लोड नहीं करता है।

मूल

बदलें

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

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

मार्गों के आदेश वर्तमान में महत्वपूर्ण है। सबसे विशिष्ट मार्ग पहले आते हैं, कम से कम विशिष्ट मार्ग आखिरी हैं। यह एक ज्ञात मुद्दा है और जल्द ही तय किया जाना चाहिए।

+0

इससे मदद नहीं मिली। मुझे एक ही त्रुटि संदेश मिलता है। मौजूदा segemnt "निर्माण" उपलब्ध मार्गों में नहीं है। आपको मेरा लक्ष्य पता था, लेकिन यह सुनिश्चित करने के लिए: मैं 'create' url पर नेविगेट करके create.schoolyear.component.html के साथ schoolyears.component.html को प्रतिस्थापित करना चाहता हूं। – Pascal

+0

https://plnkr.co/edit/oksKwNmGvubDlpV45yEB?p=preview में ठीक काम करने लगता है।क्या आप इस समस्या के साथ अपनी समस्या को पुन: पेश करने का प्रयास कर सकते हैं? –

+0

मुझे उम्मीद है कि मैंने सही स्थान पर राउटरलिंक (जिसे आप अपने नमूने में भूल गए थे) को जोड़ा है: https://plnkr.co/edit/vjCbsqZazr0rp77xjnSm?p=preview कुछ समय ऐसा होता है जब आप इसे क्लिक करते हैं? क्या हम अपने लिंक के साथ आगे बढ़ सकते हैं? – Pascal

0

आप एप्लिकेशन घटक में रूटर इंजेक्षन करने की जरूरत है कुछ इस तरह:

export class AppComponent { 

    constructor(private router: Router) {} 

} 

यह सामान्य रूप से की जरूरत है जब इस घटक के साथ जुड़े टेम्पलेट <router-link> निर्देश का उपयोग नहीं करता। जब केवल का उपयोग कर <router-outlet>

+0

इससे मदद नहीं मिली। मुझे एक ही त्रुटि संदेश मिलता है। मौजूदा segemnt "निर्माण" उपलब्ध मार्गों में नहीं है। – Pascal

3

आपको अग्रणी '/' को हटाना होगा, नया राउटर आपके लिए इसे संभालता है।

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

मैंने इसका परीक्षण किया है, और यह सही लगता है! –

0

ऐसा लगता है कि @Routes में हम जिन मार्गों का उल्लेख करते हैं, उनके आदेश उल्लेखनीय हैं। सबसे विशिष्ट मार्ग सबसे पहले आते हैं, कम से कम विशिष्ट मार्ग आखिरी हैं। इस पर निर्भर करते हुए आपके @ रूट्स को

@Routes([ 
    {path: '/create', component: CreateSchoolyearComponent}, 
    {path: ' ', component: SchoolyearsHomeComponent}, 
])` 
संबंधित मुद्दे