2015-12-27 21 views
12

प्राप्त करें, मैं वर्तमान मार्ग के पथ जैसे//, /,/location.path() के साथ समाचार प्राप्त करने में सक्षम हूं। लेकिन इसके बजाय मैं इसके उपनाम कैसे प्राप्त कर सकता हूं ('मार्ग की परिभाषा में' भाग ')?कोणीय 2 वर्तमान मार्ग के उपनाम

{ path: '/about', as: 'About', component: About } 

क्या यह संभव है?

+0

का उपयोग करते समय उर्फ ​​प्राप्त करना चाहते हैं के रिश्तेदार मार्ग मिल सकता है? –

+3

क्योंकि पथ अंततः स्थानीयकृत हो जाएंगे। मैंने सोचा कि यह वास्तव में – Pietrzm

उत्तर

2

आप स्थान उपयोग नहीं करना चाहिए की उर्फ ​​पारित करने के लिए, बजाय आप रूटर उदाहरण का उपयोग करना चाहिए है।

अपने घटक में, के साथ निर्माता में यह इंजेक्षन:

constructor(public router: Router) 
से

, आप के साथ घटक के नाम प्राप्त कर सकते हैं:

this.router.currentInstruction.component.routeName 

मुझे यकीन है कि कैसे आप रूटर से रूप प्राप्त नहीं कर रहा हूँ config। लेकिन RouterLink निर्देश सही जगह के साथ शुरू करने के लिए किया जाना चाहिए: https://angular.io/docs/ts/latest/api/router/RouterLink-directive.html

+1

पर कौन सा पृष्ठ है, लेकिन 'location.path() 'का उपयोग क्यों न करें, यह जांचने के लिए उपनाम का उपयोग करना बेहतर होगा? –

+1

यदि आपके पास हैश रणनीति स्थान.path काम नहीं करेगा। यूआरएल/#/'लगभग' –

+0

के बजाय '/' वापस आ जाएगा राउटर के नवीनतम पुनरावृत्ति में 'वर्तमान निर्देश' समतुल्य नहीं है? –

0

आप संभव उपनाम की सूची पता है तो यह वर्तमान उर्फ ​​के नाम router.generate और route.isActiveRoute के संयोजन का उपयोग पता लगाने के लिए संभव है:

के लिए उदाहरण के लिए, मेरे पास तीन चरणों के साथ एक जादूगर है। मैं एक सरणी में कदम उपनाम की एक सूची है:

const alias = this.wizardAliases 
    .map(alias => ({ alias, navigationInstruction: this.router.generate([alias]) })) 
    .filter(x => this.router.isRouteActive(x.navigationInstruction)) 
    .map(x => x.alias); 

if (alias.length === 1) { 
    console.log(`alias is ${alias}`); 
} 

अस्वीकरण::

private wizardAliases = [ 
    'wizardStep1', 
    'wizardStep2', 
    'wizardStep3' 
]; 

मैं तो निम्न कोड वर्तमान उर्फ ​​नाम का निर्धारण करने के लिए उपयोग मैं अगर यह काम करता है देखने के लिए प्रयास नहीं किया है मार्ग पैरामीटर के साथ।

3

नोट: निम्नलिखित 2.0 बीटा श्रृंखला के साथ परीक्षण किया गया है। आरसी संस्करणों में ब्रेकिंग परिवर्तनों के साथ एक अद्यतन राउटर घटक है। पुराने का नाम बदलकर router-deprecated कर दिया गया है। यह अभी तक नए राउटर के खिलाफ परीक्षण नहीं किया गया है।

निम्नलिखित आपके सक्रिय मार्ग के आधार पर Foo या Bar प्रिंट करेगा।

@Component({ 
    selector: 'app', 
    templateUrl: 'app/app.html', 
    directives: [ROUTER_DIRECTIVES] 
}) 
@RouteConfig([ 
    {path:'/', name: 'Foo', component: FooComponent, useAsDefault: true}, 
    {path:'/bar', name: 'Bar', component: BarComponent, useAsDefault: false}, 
]) 
export class AppComponent implements OnInit { 
    constructor(private _router: Router) { 
    } 

    ngOnInit() { 
     console.log('current route name', 
        this._router.currentInstruction.component.routeName); 
    } 
} 
+1

जब एक उप घटक के अंदर, आप 'this._router.root.currentInstruction.component.routeName' (नोट _root_) का उपयोग कर सकते हैं - इस आधार पर कि आप किस रूट के बारे में जानना चाहते हैं। – ZoolWay

1

> = Angular2 RC.x के लिए (नया रूटर)

कोई उपनाम नई रूटर में अब कर रहे हैं।

आप स्थानीय घटक

routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void { 
    console.log(curr.stringifiedUrlSegments); 
    } 

या पूर्ण पथ

constructor(private router:Router) {} 

    routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void { 
    console.log(this.router.serializeUrl(tree)); 
    } 

या

constructor(router:Router, private location:Location) { 
    router.changes.subscribe(() => { 
    console.log(this.location.path()); 
    }); 
} 
+0

यह भी देखें http://stackoverflow.com/questions/37183874/get-the-path-or-the-name-of-the-routes-in-angular-2/37207316#37207316 –

संबंधित मुद्दे