2016-06-09 13 views
10

हाल ही में मैंने this useful article about Angular 2 Router पढ़ा और the demo पर देखा। सब कुछ सही लग रहा था। लेकिन जब मैंने router-link-active कक्षा के आधार पर सक्रिय मार्ग निर्धारित करने का प्रयास किया, तो मुझे पता चला कि रूट रूट हमेशा सक्रिय है।कोणीय 2 रूट का मार्ग हमेशा सक्रिय होता है

@Component({ 
    selector: 'demo-app', 
    template: ` 
    <a [routerLink]="['/']">Home</a> 
     <a [routerLink]="['/about']">About</a> 
    <div class="outer-outlet"> 
     <router-outlet></router-outlet> 
    </div> 
    `, 
    // add our router directives we will be using 
    directives: [ROUTER_DIRECTIVES] 
}) 
@Routes([ 
    // these are our two routes 
    { path: '/', name: 'Home', component: HomeComponent }, // , useAsDefault: true}, // coming soon 
    { path: '/about', name: 'About', component: AboutComponent } 
]) 
export class AppComponent { } 

अगर मैं <a [routerLink]="['/home']">Home</a> डिफ़ॉल्ट घटक (करने के लिए '/home' और <a [routerLink]="['/']">Home</a> को '/' से पथ बदल:

यहाँ app.component.ts के कोड का टुकड़ा है जहां 'मुख्य' मार्गों कॉन्फ़िगर किया गया है है जो होमकंपोनेंट होना चाहिए) गायब हो जाता है। होमकंपोनेंट केवल तब सक्रिय हो जाएगा जब लिंक क्लिक किया गया हो और router-link-active प्रत्येक बार जब भी हम दूसरे रूट में बदल जाएंगे तो उसे सही ढंग से जोड़ा और हटा दिया जाएगा।

क्या यह एक बग है या मार्गों की कॉन्फ़िगरेशन में कुछ गड़बड़ है?

+0

यह लिंक आप के लिए दिलचस्प हो सकता है https://github.com/angular/angular/issues/8397 – yurzui

+0

हाय @ yurzui, लिंक के लिए धन्यवाद। यह बहुत उपयोगी है। एंगुलर 2 मार्ग काम करता है जिस तरह से बाहर निकलता है। तो मुझे अपना खुद का कामकाज करना है .. :( – asubanovsky

+0

यूर्ज़ुई का लिंक नए राउटर के बारे में प्रतीत होता है। बीटा और आरसी.1 '@ कोणीय/राउटर-बहिष्कृत' के लिए https://github.com/angular/angular/मुद्दों/5334 संबंधित समस्या प्रतीत होती है। –

उत्तर

16

में काम करता है अपने घर लंगर मेरे लिए काम किया के लिए निम्न प्रॉपर्टी जोड़ने से है। [routerLinkActiveOptions]="{ exact: true }"

पता लगाने के अधिक https://github.com/angular/angular/issues/8397#issuecomment-237314970

+1

सिर के लिए धन्यवाद ऊपर, इसके लिए अन्य की तलाश में, यहां इस सुविधा पर आधिकारिक दस्तावेज है: https://angular.io/docs/ts/latest/api/router/index/RouterLinkActive-directive.html – Martin

0

यह मेरे ज्ञान के लिए एक बग नहीं है, आपको / या अज्ञात पथों के लिए फ़ॉलबैक घटक होना चाहिए। (सबसे अधिक संभावना HomeComponent)

@Routes([ 
    { path: '/home', component: HomeComponent }, 
    { path: '/about', component: AboutComponent }, 
    { path: '*', name: component: HomeComponent } 
]); 

यह हालांकि नई Router मॉड्यूल (नहीं पदावनत एक) का उपयोग कर और rc.0 और rc.1

+0

प्रतिक्रिया के लिए धन्यवाद। लेकिन यह मदद नहीं करता है। मुझे लगता है, जब हम रूट रूट"/"को परिभाषित करते हैं, तो यह एक और मार्ग बनाता है जैसे कि"/about "अपने बच्चों के रूप में व्यवहार करता है। "मार्ग-लिंक-सक्रिय" वर्ग प्रकट होता है। – asubanovsky

0

यह है कि यह कैसे काम करेगा:

<nav> 
    <a routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">Home</a> 
    <a routerLink="/about" routerLinkActive="active">About</a> 
</nav> 
संबंधित मुद्दे