2017-07-20 17 views
13

पुस्तिका में वर्णित है, router.navigate एक डेल्टा स्वीकार करता है, लेकिन मैनुअल लेकिन उस पर पर्याप्त रूप से विशिष्ट नहीं है:कोणीय router.navigate() डेल्टा

नेविगेट आदेशों की प्रदान की सरणी और एक प्रारंभिक के आधार पर बिंदु। कोई प्रारंभिक मार्ग प्रदान की जाती है, तो नेविगेशन निरपेक्ष है।

...

navigateByUrl के विपरीत में, हमेशा नेविगेट एक डेल्टा कि वर्तमान URL पर लागू किया जाता है लेता है।

क्या यह सिर्फ एक सापेक्ष यूआरएल या कुछ और जटिल लागू करता है? डेल्टा किस तरह यह तो पूर्ण नेविगेशन के मामले में का उल्लेख करता है?

+0

डेल्टा क्या है? मुझे अभी कोणीय दस्तावेज़ों में 'डेल्टा' के लिए एक जगह मिली है, यह राउटरलिंक एपीआई दस्तावेज़ पृष्ठ के लिए एक हिस्सा है: > राउटर लिंक निर्देश हमेशा प्रदत्त इनपुट को वर्तमान यूआरएल में डेल्टा के रूप में मानता है। > उदाहरण के लिए, यदि वर्तमान यूआरएल/उपयोगकर्ता/(बॉक्स // aux: टीम) है। > फिर निम्न लिंक Jim लिंक/उपयोगकर्ता/(jim // aux: टीम) उत्पन्न करेगा। अधिक जानकारी के लिए createUrlTree देखें। '' – Hayden

उत्तर

7

में शामिल हैं का उपयोग कर navigateByUrl यह सिर्फ एक सापेक्ष URL या अधिक जटिल कुछ भी लागू होती है कॉल?

यह एक रिश्तेदार टुकड़े आप commands परम के माध्यम से प्रदान करते हैं और खाते में अतिरिक्त पैरामीटर आप extras (NavigationExtras object) में पारित लेने से बनाया यूआरएल है।

उदाहरण के लिए, आप सक्रिय मार्ग से या रूट रूट से नेविगेट करने के लिए relativeTo का उपयोग कर सकते हैं। आप यूआरएल के लिए क्वेरी पैरामीटर या खंड सेट कर सकते हैं जो आप नेविगेट करते हैं (queryParams और fragment अतिरिक्त में) या आप वर्तमान यूआरएल में मौजूद क्वेरी पैरामीटर को संरक्षित कर सकते हैं (queryParamsHandling अतिरिक्त में)।

और इसी तरह, सामान्य रूप से, यह वास्तव में URL द्वारा केवल एक नेविगेशन की तुलना में कुछ अधिक जटिल है क्योंकि हम URL को गतिशील रूप से बनाते हैं।

पूर्ण नेविगेशन के मामले में इसका किस प्रकार का डेल्टा संदर्भित करता है?

यह सापेक्ष और निरपेक्ष नेविगेशन के लिए एक ही है - डेल्टा परिवर्तनों के समूह (commands) वर्तमान मार्ग (रिश्तेदार) को लागू करने के लिए या रूट रूट करने के लिए (पूर्ण) नए राज्य के लिए आवेदन हस्तांतरण करने के लिए है (बस navigateByUrl के माध्यम से नए URL प्रदान करने के खिलाफ)।

सरल मामले में, यदि आप this.router.navigate(['/heroes']) की तरह कुछ करना यह वास्तव में नहीं navigateByUrl का उपयोग करने से बहुत अलग है, लेकिन इन उदाहरणों पर विचार (createUrlTree जो वास्तव में commands और extras धर्मान्तरित अंतिम URL देखें):

// create /team/33/(user/11//right:chat) 
router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]); 

// remove the right secondary node 
router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]); 

तो भी पूर्ण नेविगेशन के लिए, navigate विधि अतिरिक्त उपकरण गतिशील यूआरएल का निर्माण करने का एक सेट प्रदान करता है। आप navigateByUrl के साथ ऐसा कर सकता है, लेकिन आप शायद पार्स होगा/concat/तार के साथ अन्य manipluations कर (या navigate और createUrlTree क्या प्रदान करने के लिए इसी तरह के स्वयं के उपकरण का विकास होगा)।

2
रिश्तेदार मोड में

, डेल्टा वर्तमान रूट करने के लिए लागू किया जाता है। यह मूल रूप से इस कोड को

/** 
    * Navigate based on the provided array of commands and a starting point. 
    * If no starting route is provided, the navigation is absolute. 
    * 
    * Returns a promise that: 
    * - resolves to 'true' when navigation succeeds, 
    * - resolves to 'false' when navigation fails, 
    * - is rejected when an error happens. 
    * 
    * ### Usage 
    * 
    * ``` 
    * router.navigate(['team', 33, 'user', 11], {relativeTo: route}); 
    * 
    * // Navigate without updating the URL 
    * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true}); 
    * ``` 
    * 
    * In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current 
    * URL. 
    */ 
    navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}): 
     Promise<boolean> { 
    validateCommands(commands); 
    return this.navigateByUrl(this.createUrlTree(commands, extras), extras); 
    } 

कई उदाहरण स्रोत कोड https://github.com/angular/angular/blob/master/packages/router/src/router.ts

+0

सवाल यह है कि क्या यह सिर्फ एक सापेक्ष यूआरएल या कुछ और जटिल लागू करता है? फिर पूर्ण नेविगेशन के मामले में यह किस प्रकार का डेल्टा संदर्भित करता है? *। यह स्पष्ट नहीं है कि इस डेल्टा की गणना क्या है और क्या। यदि यह सापेक्ष पथ है, तो वे शायद 'सापेक्ष पथ' कहेंगे। मैं किसी ऐसे चीज़ पर बक्षीस नहीं डालूंगा जिसे आधिकारिक दस्तावेज़ों से आसानी से निकाला जा सके। – estus

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