2016-07-02 7 views
3

Ich schreibe eine angular2 rc4-Anwendung mit "@angular/router": "3.0.0-beta.2".umleiten alle ungültigen URLs zu einer bestimmten Komponente mit angular2 rc4

für jetzt habe ich zwei Routen, willkommen und Hilfe, und ich erstellte eine andere Route, die alles andere auf die Willkommenskomponente umleiten wird.

das ist mein routes.ts Datei:

import { provideRouter, RouterConfig } from "@angular/router"; 
import {WelcomeComponent} from "./welcome.component"; 
import {HelpComponent} from "./help.component"; 

export const routes:RouterConfig = [ 
    { path: "",redirectTo: "welcome"}, 
    { path: "welcome", component: WelcomeComponent }, 
    { path: "help",component: HelpComponent} 
]; 

export const APP_ROUTER_PROVIDERS = [ 
    provideRouter(routes) 
]; 

meinem Server ist golang und ich habe es so konfiguriert, dass alle ungültigen Urls

so jetzt index.html wird umgeleitet, wenn ich zum Beispiel zu sehen: localhost/weclome2, tut es zeigt mir den Inhalt willkommen Komponente, aber die uRL im Browser weist immer noch statt willkommen zu welcome2 und ich erhalte auch die folgenden Fehler in der JavaScript-Konsole:

EXCEPTION: Error: Uncaught (in promise): Error: Cannot match any routes: 'welcome2' 
VM8530:27 EXCEPTION: Error: Uncaught (in promise): Error: Cannot match any routes: 'welcome2'window.console.error @ VM8530:27BrowserDomAdapter.logError @ bundle.js:50349BrowserDomAdapter.logGroup @ bundle.js:50359ExceptionHandler.call @ bundle.js:11343(anonymous function) @ bundle.js:14458schedulerFn @ bundle.js:14747SafeSubscriber.__tryOrUnsub @ bundle.js:15377SafeSubscriber.next @ bundle.js:15326Subscriber._next @ bundle.js:15279Subscriber.next @ bundle.js:15243Subject.next @ bundle.js:14835EventEmitter.emit @ bundle.js:14735onError @ bundle.js:19058onHandleError @ bundle.js:19270ZoneDelegate.handleError @ bundle.js:5267Zone.runGuarded @ bundle.js:5173_loop_1 @ bundle.js:5427drainMicroTaskQueue @ bundle.js:5434ZoneTask.invoke @ bundle.js:5366 
VM8530:27 STACKTRACE:window.console.error @ VM8530:27BrowserDomAdapter.logError @ bundle.js:50349ExceptionHandler.call @ bundle.js:11345(anonymous function) @ bundle.js:14458schedulerFn @ bundle.js:14747SafeSubscriber.__tryOrUnsub @ bundle.js:15377SafeSubscriber.next @ bundle.js:15326Subscriber._next @ bundle.js:15279Subscriber.next @ bundle.js:15243Subject.next @ bundle.js:14835EventEmitter.emit @ bundle.js:14735onError @ bundle.js:19058onHandleError @ bundle.js:19270ZoneDelegate.handleError @ bundle.js:5267Zone.runGuarded @ bundle.js:5173_loop_1 @ bundle.js:5427drainMicroTaskQueue @ bundle.js:5434ZoneTask.invoke @ bundle.js:5366 
VM8530:27 Error: Uncaught (in promise): Error: Cannot match any routes: 'welcome2' 
at resolvePromise (bundle.js:5478) 
at bundle.js:5455 
at ZoneDelegate.invoke (bundle.js:5263) 
at Object.onInvoke (bundle.js:19249) 
at ZoneDelegate.invoke (bundle.js:5262) 
at Zone.run (bundle.js:5156) 
at bundle.js:5511 
at ZoneDelegate.invokeTask (bundle.js:5296) 
at Object.onInvokeTask (bundle.js:19240) 
at ZoneDelegate.invokeTask (bundle.js:5295)window.console.error @ VM8530:27BrowserDomAdapter.logError @ bundle.js:50349ExceptionHandler.call @ bundle.js:11346(anonymous function) @ bundle.js:14458schedulerFn @ bundle.js:14747SafeSubscriber.__tryOrUnsub @ bundle.js:15377SafeSubscriber.next @ bundle.js:15326Subscriber._next @ bundle.js:15279Subscriber.next @ bundle.js:15243Subject.next @ bundle.js:14835EventEmitter.emit @ bundle.js:14735onError @ bundle.js:19058onHandleError @ bundle.js:19270ZoneDelegate.handleError @ bundle.js:5267Zone.runGuarded @ bundle.js:5173_loop_1 @ bundle.js:5427drainMicroTaskQueue @ bundle.js:5434ZoneTask.invoke @ bundle.js:5366 
VM8530:27 Unhandled Promise rejection: Cannot match any routes: 'welcome2' ; Zone: angular ; Task: Promise.then ; Value: Error: Cannot match any routes: 'welcome2'(…)window.console.error @ VM8530:27consoleError @ bundle.js:5401_loop_1 @ bundle.js:5430drainMicroTaskQueue @ bundle.js:5434ZoneTask.invoke @ bundle.js:5366 
VM8530:27 Error: Uncaught (in promise): Error: Cannot match any routes: 'welcome2'(…)window.console.error @ VM8530:27consoleError @ bundle.js:5403_loop_1 @ bundle.js:5430drainMicroTaskQueue @ bundle.js:5434ZoneTask.invoke @ bundle.js:5366 

was fehlt mir?

danke!

Update

Nach einer Google-Suche fand ich einige Antworten auf ältere Versionen von angular2, so dass ich versuchte, sich auf die neue Version mit dem folgenden Code zu übernehmen:

export const routes:RouterConfig = [ 
    { path: "",redirectTo:"welcome",pathMatch:"full"}, 
    { path: "welcome", component: WelcomeComponent }, 
    { path: "help",component: HelpComponent}, 
    { path: "*",redirectTo:"welcome"} 
]; 

aber die Ergebnisse sind genauso.

Antwort

9

Der neue Router verwendet '**' zu einem einzigen Gegensatz '*'

export const routes:RouterConfig = [ 
    { path: "",redirectTo:"welcome",pathMatch:"full"}, 
    { path: "welcome", component: WelcomeComponent }, 
    { path: "help",component: HelpComponent}, 
    { path: "**",redirectTo:"welcome"} 
]; 
Verwandte Themen