2017-01-18 4 views
18

रूट करने के लिए अतिरिक्त क्वेरी पैरा जोड़ें, उदाहरण के लिए मैं मार्ग /cars?type=coupe पर हूं और मैं अतिरिक्त क्वेरी पैरा (लेकिन मौजूदा एक को रखते हुए) के साथ एक ही एंडपॉइंट पर नेविगेट करना चाहता हूं। मैं इसकोणीय 2 में क्वेरी पैरा को संरक्षित करने के लिए और

<a [routerLink]="['/cars']" [queryParams]="{model: 'renault'}" preserveQueryParams>Click</a> 

प्रारंभिक क्वेरी पैरामीटर संरक्षित कर रहे हैं (प्रकार = कारों) लेकिन जोड़ा लोगों (मॉडल = Renault) अनदेखी कर रहे हैं की तरह कुछ कोशिश कर रहा हूँ। क्या यह अपेक्षित/सही व्यवहार है या किसी प्रकार की बग है? ऐसा लगता है कि preserveQueryParams को क्वेरी पैराम्स पर प्राथमिकता है? क्या कोई अन्य चिकनी समाधान है?

+1

Anguar 4 का उपयोग कर, मैं preserveQueryParams हटा दिया गया है देखते हैं, queryParamsHandling बजाय का उपयोग ??? –

उत्तर

6

यह सिर्फ इस तरह दुर्भाग्य से काम करता है:

const q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams;

आप इस तरह कस्टम निर्देश जोड़ने की कोशिश कर सकते हैं:

@Directive({selector: 'a[routerLink][merge]'}) 
export class RouterLinkDirective implements OnInit 
{ 

    @Input() 
    queryParams: {[k: string]: any}; 

    @Input() 
    preserveQueryParams: boolean; 


    constructor(private link:RouterLinkWithHref, private route: ActivatedRoute) 
    { 
    } 

    public ngOnInit():void 
    { 
     this.link.queryParams = Object.assign(Object.assign({}, this.route.snapshot.queryParams), this.link.queryParams); 
     console.debug(this.link.queryParams); 
    } 
} 


<a [routerLink]="['/cars']" merge [queryParams]="{model: 'renault'}">Click</a> 
4

कोणीय 4 में और कोणीय 5, preserveQueryParamsqueryParamsHandling के पक्ष में पदावनत किया गया है। विकल्प या तो 'merge' या 'preserve' हैं।

में कोड उदाहरण (NavigationExtras में प्रयुक्त):

this.router.navigate(['somewhere'], { queryParamsHandling: "preserve" }); 

में टेम्पलेट उदाहरण:

<a [routerLink]="['somewhere']" queryParamsHandling="merge"> 
+0

महान जवाब! हो सकता है कि आप अपने पहले उदाहरण में मर्ज का उपयोग करना चाहें क्योंकि यह ओपी चाहता है – BradleyDotNET

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