2016-04-21 24 views
5

Szukałem w tym kodu źródłowego: https://github.com/angular/angular.io/blob/master/public/docs/_examples/toh-5/dart/lib/app_component.dartRouting nie działa na mnie, kiedy robi się ciężko odświeżanie

i wydaje się, że moja aplikacja będzie trasa teraz, kiedy idę do korzenia.

localhost: 8080/

Aktualizacje routingu jak poruszać mojego wniosku, ale wydaje się, że jeśli jestem na coś: localhost:8080/dashboard w basecase, a nie twarde odświeżania, to się nie powiedzie. To da mi błąd 404 not found!.

To zadziała, jeśli znajdę: localhost:8080/#!/dashboard, ale to nie jest adres przekazany do mojej aplikacji.

W index.html mam: <base href="/">

Mój plik App_Component.dart jest następujący:

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"; 
} 

Wydaje Mam trasy działa na wszystko z wyjątkiem tego.

Wymagany przeze mnie stan końcowy: localhost: 8080/detail/14 i otworzy właściwy komponent. To jest coś, co nie jest teraz wykonywane na nowym odnośniku do strony, tak samo jak podczas nawigacji w aplikacji.

Odpowiedz

3

Aby przełączyć się HashLocationStrategy zmiany dostawców do

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

Jeśli chcesz użyć PathLocationStrategy można użyć tego pub serve -wrapper https://pub.dartlang.org/packages/pub_serve_rewrites która umożliwia korzystanie PathLocationStrategy z pub serve.

W celu wdrożenia należy skonfigurować serwer WWW, który jest tam używany, aby obsługiwać funkcję push5 w formacie HTML5.

+1

Idealny! Działa świetnie. Badałem i zauważyłem to tutaj: https://github.com/ng2-dart-samples/router/blob/master/web/main.dart. Najbardziej lubię tę odpowiedź. – Fallenreaper

+0

Możesz także użyć na przykład nginx jako proxy dla programowania zamiast pub_serve_rewrites. Tak, Kasper był dość aktywny w społeczności strzałkowej Angular2. Wydaje się, że jest obecnie zajęty studiami matematycznymi: - / –

1

Trasy istnieją tylko w Twojej aplikacji, serwer nic nie wie, sprawdza tylko ścieżkę /dashboard lub /detail/14 dla domyślnej strony/pliku, która nie istnieje.

Musisz skonfigurować router serwera, aby przejść do aplikacji index.html (tutaj nazwa Twojego html) dla wszystkich tras aplikacji.

0

Jeśli localhost:8080/#/dashboard prace ale localhost:8080/dashboard się nie powiedzie, to sugeruje, że używasz HashLocationStrategy zamiast PathLocationStrategy.

Sprawdzając swoją funkcję bootstrap() lub gdziekolwiek indziej, upewnij się, że nie został wprowadzony HashLocationStrategy.