2017-02-10 2 views
0

Die Aktualisierung der eckigen2-Dart-Seite mit HashLocationStrategy funktioniert gut, da sie die exakt gleiche Ansicht öffnet.Angular2-Dart PathLocationStrategy

Aktualisieren der Seite mit PathLocationStrategy - mit Tomcat-Server für die Bereitstellung von index.html - funktioniert für die URL ohne Parameter, funktioniert aber nicht für die URL mit Parameter.

localhost: 8090/menu1 // Refresh funktioniert
localhost: 8090/menu2/paramVal // nicht

tomcat web.xml nicht aufzufrischen hat

<error-page> 
    <error-code>404</error-code> 
    <location>/index.html</location> 
    </error-page> 

main.dart

main() { 
     bootstrap(AppComponent, [ 
     ROUTER_PROVIDERS, 
     provide(APP_BASE_HREF, useValue: '/')]); 
} 

app_component.dart

import 'package:angular2/core.dart'; 
import 'package:angular2/router.dart'; 
import 'package:angular2/angular2.dart'; 
import 'package:mboxes/menu1.dart'; 
import 'package:mboxes/menu2.dart'; 

@Component(
    selector: 'my-app', 
    templateUrl: 'app_component.html', 
    directives: const [ROUTER_DIRECTIVES], 
    providers: const[ROUTER_PROVIDERS, ]) 

@RouteConfig(const [ 
    const Route(
     path: '/menu1', 
     name: 'Menu1', 
     component: Menu1Component, 
     useAsDefault: true), 
    const Route(
     path: '/menu2/:param', name: 'Menu2', component: Menu2Component) 
]) 
class AppComponent {} 

app_component.html

<div class="container"> 
    <nav> 
     <ul> 
      <li> 
       <a [routerLink]="['Menu1']">Menu1</a> 
      </li> 
      <li> <a [routerLink]="['Menu2', {'param':'paramVal'}]">Menu2</a> </li> 
     </ul> 
    </nav> 

    <div style="padding-left: 200px; padding-top: 200px; padding-bottom: 50px"> 
    <router-outlet></router-outlet> 
    </div> 
</div> 

menu1.dart

import 'package:angular2/core.dart'; 
import 'package:angular2/router.dart'; 
@Component(
    selector: 'menu1', 
    template: ''' menu 1 was clicked ''' 
) 
class Menu1Component {} 

menu2.dart

import 'package:angular2/core.dart'; 
import 'package:angular2/router.dart'; 
@Component(
    selector: 'menu2', 
    template: ''' menu 2 was clicked''' 
) 
class Menu2Component implements OnInit { 
    final RouteParams _routeParams; 
    Menu2Component(this._routeParams); 
    ngOnInit() { 
    var val = _routeParams.get('param'); 
    print ("passed param is " + val); 
    } 
} 
+0

Ist die Anwendung im Stammordner oder ist 'Helden' ein Detailordner serviert. Normalerweise gibt es nichts anderes zu tun als "PathLocationStrategy" (Standard) zu konfigurieren und Anfragen an nicht existierende URLs in "index.html" umzuschreiben. –

+0

Ich habe nur zwei Ordner - Web-Ordner enthält index.html und lib-Ordner enthält alle anderen Komponenten – marcg

+0

Anwendung wird aus dem Stammordner geliefert. URLs mit Parametern werden nicht aktualisiert. URLs ohne Parameter werden aktualisiert. – marcg

Antwort

Verwandte Themen