एक रूटरलिंक के साथ क्वेरी पैरामीटर कैसे पास करें


161

मैं एक क्वेरी पैरामीटर पास करना चाहता हूं prop=xxx।

यह काम नहीं किया

<a [routerLink]="['/somepath', {queryParams: {prop: 'xxx'}}]>Somewhere</a>

सिंटैक्स जो आप उपयोग करना चाहते हैं वह मैट्रिक्स मापदंडों के लिए है और यह प्रपत्र है <a [routerLink]="['/somepath', { foo: 'foo' }]">Somewhere</a>, इससे आपको मैट्रिक्स url पैरामीटर (अर्धविराम; के बजाय; और विभाजक) मिलते हैं और आप इसे ActiveRoute.queryParams के बजाय ActivatedRoute.params द्वारा एक्सेस कर सकते हैं। stackoverflow.com/questions/35688084/… और यहाँ stackoverflow.com/questions/2048121/…
— विलियम अर्डीला

1
क्वेरी पैरामीटर और मैट्रिक्स पैरामीटर समान हैं। एकमात्र अंतर यह है कि जब उन्हें रूट सेगमेंट में जोड़ा जाता है, तो उन्हें क्वेरी पैरामीटर के रूप में क्रमबद्ध किया जाता है, जब उन्हें एक चाइल्ड सेगमेंट में जोड़ा जाता है, तो उन्हें मैट्रिक्स पैरामीटर के रूप में क्रमबद्ध किया जाता है।
— गुंटर ज़ोचबॉयर

कुछ और मतभेद हैं इस जाँच web.archive.org/web/20130126100355/http://brettdargan.com/blog/... इसके अलावा आप यहां कोणीय दस्तावेज़ में लिंक पैरामीटर वाक्य रचना की जाँच कर सकते angular.io/docs/ts/latest/ गाइड /…
— विलियम अर्डीला

जवाबों:


326

queryParams

queryParamsएक और इनपुट है routerLinkजहाँ उन्हें पसंद किया जा सकता है

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}">Somewhere</a>

fragment

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}" [fragment]="yyy">Somewhere</a>

routerLinkActiveOptions

माता-पिता के मार्गों पर सक्रिय वर्ग सेट प्राप्त करने के लिए:

[routerLinkActiveOptions]="{ exact: false }"

उपयोग करने के लिए क्वेरी पैरामीटर पास this.router.navigate(...)करना

let navigationExtras: NavigationExtras = {
  queryParams: { 'session_id': sessionId },
  fragment: 'anchor'
};

// Navigate to the login page with extras
this.router.navigate(['/login'], navigationExtras);

Https://angular.io/guide/router#query-parameters-and-fragments भी देखें


यह कैसे प्रोग्रामेटिक रूप से काम करेगा? मैंने इसके साथ प्रयास किया था। .terter.navigate (['/ resetPassword', {queryParams: {username: loginName}}]]; लेकिन परिणाम था: लोकलहोस्ट: 8100 / रिसेटपासवर्ड; क्वेरीपैरम्स =% 5 जैकबजेक्ट% 20 ऑबजेक्ट% 5 डी
— रिकुल

2
मैंने अपना उत्तर अपडेट कर दिया। मैंने जो लिंक जोड़ा है, उसे भी देखें। यह एक पूर्ण उदाहरण दिखाता है।
— गुंटर Zöchbauer

युगल नोट: रिकुल का कोड ऐसा होना चाहिए [ '/resetPassword' ], { queryParams: { username: loginName }})जहां एक्सट्रा ]से पहले आता है। यह भी मत भूलना कि क्वेरी परम संवेदनशील हैं।
— सिमोन_विवर

2
लक्ष्य पर क्वेरीपरामेट्स की सदस्यता लेना न भूलें: stackoverflow.com/a/39146396/2726844
— विंस आई

1
या यदि आप मार्गों का उपयोग कर रहे हैं, runGuardsAndResolvers: 'always'तो मार्ग को पुनः लोड करेंगे माध्यम. com
— एडम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.