2016-01-25 8 views
5

जब मैं टाइपस्क्रिप्ट का उपयोग कर Angular2 बीटा में RouteData का उपयोग करने का प्रयास करता हूं तो मुझे समस्याएं आ रही हैं।Angular2 बीटा में रूटडेटा का उपयोग कैसे करें?

मैं निर्माता में यह इंजेक्षन और इसे ठीक से आयात

import {RouteConfig, Router, RouteData} from 'angular2/router'; 

export class App { 
    constructor(public router: Router, public data: RouteData) { 
     // router works - routedata not 
    } 
} 

मैं No provider for RouteData! (App -> RouteData) हो रही है।

तो मैं इसे इस

@Component({ 
    //.. 
    providers: [RouteData] 
}) 

की तरह घटक एनोटेशन में शामिल मैं इस त्रुटि मिलती है: Cannot resolve all parameters for RouteData(?). Make sure they all have valid type or annotations.

+0

प्रदाताओं के माध्यम से 'रूटडेटा' इंजेक्ट न करें। Angular2 आपके लिए यह सब करता है। –

+0

आपका मतलब है 'ROUTER_PROVIDERS' आयात करना? मैं टाइपस्क्रिप्ट संकलन कैसे प्राप्त कर सकता हूं? – gerric

+0

['ROUTER_PROVIDERS'] (https://github.com/angular/angular/blob/master/modules/angular2/router.ts#L84) 'रूटडेटा' और न ही 'रूटपार्म' प्रदान नहीं करता है, इसलिए वे नहीं हैं रूट घटक में उपलब्ध है। वे ['राउटरऑलेट '] (https://github.com/angular/angular/blob/master/modules/angular2/src/router/router_outlet.ts#L60) द्वारा प्रदान किए जाते हैं, इसलिए वे किसी भी घटक में लोड होंगे रूटिंग के माध्यम से। –

उत्तर

5

RouteData अपने माता पिता के घटक में RouteConfig द्वारा अपने बच्चे को घटक के लिए डेटा प्रदान करता है। अपने AppComponent में इसका उपयोग करने की आवश्यकता नहीं होनी चाहिए।

इसका इस्तेमाल करने के लिए आप इस तरह अपने AppComponent में एक RouteConfig प्रदान करना चाहिए:

@RouteConfig([ 
    {path: '/child', name: 'Child', component: ChildCmp, data: {item: 'hi there'}} 
]) 

आपका ChildComponent तो RouteData इंजेक्षन और पैरामीटर ऐसा मार्ग में सेट पुनः प्राप्त करने में सक्षम है चाहिए:

export class ChildCmp { 
    constructor(@Inject(RouteData) private data:RouteData) { 
    this.data.get("item") 
    } 
} 
संबंधित मुद्दे