В настоящее время я играю с маршрутизацией angular2. Все работает, как и ожидалось, но ввод URL-адреса маршрута вручную в браузере не работает.
Текущий код, который я использую
app.ts
import {Component} from 'angular2/core';
import {Route,RouteConfig,ROUTER_DIRECTIVES,ROUTER_PROVIDERS} from "angular2/router";
import {DashboardComponent} from "./dashboard/dashboard.component";
import {UsersComponent} from "./user/users.component";
@Component({
selector:'app',
template:`
<h1>{{title}}</h1>
<nav>
<a [routerLink]="['Dashboard']">Dashboard</a>
<a [routerLink]="['Users']">Users</a>
</nav>
<router-outlet></router-outlet>
`,
directives:[ROUTER_DIRECTIVES],
providers:[ROUTER_PROVIDERS]
})
@RouteConfig([
new Route({
path:'/dashboard',
component:DashboardComponent,
name:'Dashboard',
useAsDefault:true
}),
new Route({
path:'/users',
component:UsersComponent,
name:'Users'
})
])
export class App{
}
boot.ts
import {bootstrap} from 'angular2/platform/browser';
import {App} from "./app";
import {HashLocationStrategy} from "angular2/router";
import {LocationStrategy} from "angular2/router";
import {ROUTER_PROVIDERS} from "angular2/router";
import {provide} from "angular2/core";
bootstrap(App, [
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
Маршрутизация с использованием тегов привязки работает отлично, но когда я вручную ввожу тот же URL-адрес (http://localhost:3000/users или http://localhost:3000/dashboard) в браузере и нажмите Enter. это говорит
Cannot GET /users
or
Cannot GET /dashboard
Пожалуйста, предложите мне, как я могу обнаружить изменения URL-адреса местоположения браузера, чтобы они соответствовали сегменту пути (/users или /dashboard), активировать соответствующий компонент (или UsersComponent или DashboardComponent) и отобразить его представление.
HashLocationStrategy
. Вот что такоеHashLocationStrategy
иPathLocationStrategy
по умолчанию, они работают с разными шаблонами URL, чтобы указывать на маршруты. - person Günter Zöchbauer   schedule 13.02.2016PathLocationStrategy
, вам нужно использовать сервер, который его поддерживает. Я не знаю, является лиhttp://localhost:3000/#/dashboard
допустимым маршрутом дляHashLocationStrategy
. Загрузите свой index.html и перейдите к рассматриваемому маршруту, а затем проверьте, какой URL создает Angular. - person Günter Zöchbauer   schedule 13.02.2016