2016-04-21 7 views
5

कर मैं इस स्रोत कोड देख रहा था काम नहीं करता।रूटिंग मेरे लिए जब हार्ड रीफ़्रेश

स्थानीय होस्ट: 8080/

रूटिंग अपडेट के रूप में मैं अपने आवेदन चारों ओर ले जाने के लिए, लेकिन ऐसा लगता है कि अगर मैं कुछ पर हूँ: localhost:8080/dashboard एक basecase में, और हार्ड रीफ़्रेश करते हैं, यह विफल रहता है। यह मुझे 404 not found! त्रुटि देगा।

यह सिर्फ काम करेगा अगर मैं करता हूं: localhost:8080/#!/dashboard लेकिन यह मेरे आवेदन में पारित पता नहीं है।

index.html में मेरे पास है: <base href="/">

मेरे App_Component.dart फ़ाइल इस प्रकार है:

import 'package:angular2/angular2.dart'; 
import 'package:angular2/router.dart'; 

import 'hero_component.dart'; 
import 'heroes_component.dart'; 
import 'dashboard_component.dart'; 
import 'hero_service.dart'; 
@Component(
    selector: "my-app", 
    directives: const [ROUTER_DIRECTIVES], 
    providers: const [HeroService, ROUTER_PROVIDERS], 
    templateUrl: "app_component.html") 
@RouteConfig(const [ 
    const Route(
     path: "/dashboard", 
     name: "Dashboard", 
     component: DashboardComponent, 
     useAsDefault: true), 
    const Route(
     path: "/detail/:id", name: "HeroDetail", component: HeroDetailComponent), 
    const Route(path: "/heroes", name: "Heroes", component: HeroesComponent) 
]) 
class AppComponent { 
    String title = "Tour of Heroes"; 
} 

ऐसा लगता है कि मैं इस के अलावा सब कुछ के लिए काम कर मार्ग की है।

मेरा वांछित अंत राज्य होगा: लोकलहोस्ट: 8080/विस्तार/14 और यह सही घटक खुल जाएगा। यह ऐसा कुछ है जो अब एक नए साइट संदर्भ पर किया जाता है जितना कि पूरे एप्लिकेशन में नेविगेट करते समय।

उत्तर

3

bootstrap(AppComponent, [ 
    HeroService, 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, useClass: HashLocationStrategy) 
]) 

को प्रदाताओं HashLocationStrategy परिवर्तन करने के लिए स्विच करने के लिए आप PathLocationStrategy उपयोग करने के लिए आप इस pub servehttps://pub.dartlang.org/packages/pub_serve_rewrites -wrapper कि pub serve साथ PathLocationStrategy का उपयोग करने की अनुमति देता का उपयोग कर सकते हैं।

तैनाती के लिए आपको HTML5 pushState का समर्थन करने के लिए उपयोग किए जाने वाले वेबसर्वर को कॉन्फ़िगर करने की आवश्यकता है।

+1

बिल्कुल सही! बहुत अच्छा काम करता है। मैं शोध कर रहा था और इसे यहां देखा: https://github.com/ng2-dart-samples/router/blob/master/web/main.dart भी। मुझे यह जवाब सबसे ज्यादा पसंद है। – Fallenreaper

+0

आप pub_serve_rewrites के बजाय विकास के लिए प्रॉक्सी के रूप में nginx उदाहरण के लिए भी उपयोग कर सकते हैं। यूप, कास्पर Angular2 डार्ट समुदाय में काफी सक्रिय था। ऐसा लगता है कि वह वर्तमान में अपने गणित अध्ययनों में व्यस्त है: - / –

1

मार्ग केवल आपके ऐप में मौजूद हैं, सर्वर कुछ भी नहीं जानता है, यह डिफ़ॉल्ट पृष्ठ/फ़ाइल के लिए पथ /dashboard या /detail/14 को जांचता है जो मौजूद नहीं है।

आपको अपने सभी ऐप मार्गों के लिए ऐप index.html (यहां अपना HTML नाम) पर नेविगेट करने के लिए सर्वर राउटर को कॉन्फ़िगर करना होगा।

0

यदि localhost:8080/#/dashboard काम करता है लेकिन localhost:8080/dashboard विफल रहता है, तो यह सुझाव देता है कि आप के बजाय HashLocationStrategy का उपयोग कर रहे हैं।

अपना bootstrap() फ़ंक्शन या कहीं और जांच कर, सुनिश्चित करें कि HashLocationStrategy इंजेक्शन नहीं है।

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