2016-09-09 11 views
7

संकल्प विधि एक वादा रिटर्न या विशिष्ट मार्ग के लिए आवेदन पर जाता है तो कोई डेटा नहीं मिला था।हल गार्ड: उचित तरीका मार्गों से नमूदार को हल करने, कोई डेटा नहीं मिला है, तो angular.io पर उदाहरण में

resolve(route: ActivatedRouteSnapshot): Promise<any> { 
let id = +route.params['id']; 
return this.cs.getCrisis(id).then(crisis => { 
    if (crisis) { 
    return crisis; 
    } else { // id not found 
    this.router.navigate(['/crisis-center']); 
    return false; 
    } 
}); 
} 

मान लीजिए, कि getCrisis समारोह एक नमूदार लौटने:

resolve(route: ActivatedRouteSnapshot): Observable<any> { 
    let id = +route.params['id']; 
    return this.cs.getCrisis(id).take(1) 
} 

नमूदार के मामले में। मुझे कैसे पता चलेगा कि कुछ भी वापस नहीं किया गया है, क्योंकि मैं धारा से निपट रहा हूं? संकल्प समारोह के अंदर इस मामले को संभालने का सबसे अच्छा तरीका क्या होगा?

मुझे पता है, कि मैं कर सकता घटक से उपयोगकर्ता router.navigate विधि है, लेकिन रूटर संकल्प गार्ड ठीक से उपयोग करना चाहते हैं।

+0

मुझे नहीं पता सवाल समझो। क्या काम नहीं करता है? –

उत्तर

5

आप .first() जोड़ने के लिए आवश्यकता हो सकती है (आयातित किए जाने की जरूरत है), क्योंकि वर्तमान में रूटर नमूदार को पूरा करने और है कि क्या getCrisis() के आधार पर ऐसा नहीं हो सकता है कर रहा है के लिए इंतजार कर रहा है:

resolve(route: ActivatedRouteSnapshot): Observable<any> { 
    let id = +route.params['id']; 
    return this.cs.getCrisis(id) 
    .map(data => { 
    if(data) { 
     return crisis; 
    } else { 
     this.router.navigate(['/crisis-center']); 
     return false; 
    } 
    }) 
    .first() 
} 
+0

मैंने संकल्प विधि के साथ अपना प्रश्न अपडेट कर दिया है, जो एक अनुपस्थित – Alex

+0

लौटा रहा है मैंने अपना जवाब अपडेट किया। बस के लिए बदल '' then' map' ;-) –

+1

.map सिर्फ प्रथम धारा बदलने, लेकिन रूटर इसे हल करने में सक्षम है ... – Alex

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