这是Angular 2.0 router not working on reloading the browser的后续行动 即使我配置路由器使用HashLocationStrategy我仍然得到没有#的url路径。我完全遵循Angular2文档https://angular.io/docs/ts/latest/tutorial/toh-pt5.html 并按照https://angular.io/docs/ts/latest/guide/router.html
所述设置位置策略我的引导程序:
import {bootstrap} from 'angular2/platform/browser';
import {provide} from 'angular2/core';
import {
ROUTER_PROVIDERS,
LocationStrategy,
HashLocationStrategy
} from 'angular2/router';
import {AppComponent} from './app.component';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(LocationStrategy, { useClass: HashLocationStrategy })
]);
路由器配置:
@RouteConfig([
{
path: '/detail/:id',
name: 'HeroDetail',
component: HeroDetailComponent
},
{
path: '/heroes',
name: 'Heroes',
component: HeroesComponent
},
{
path: '/dashboard',
name: 'Dashboard',
component: DashboardComponent,
useAsDefault: true
}
])
我希望在浏览器中看到http://localhost/#/dashboard这样的网址,但我得到http://localhost/dashboard。 我错过了什么?
答案 0 :(得分:1)
尝试移动ROUTER_PROVIDER并在app.component.ts文件中提供(..) - stuff。
在那里你应该把它粘贴到@ Component.providers-Array。
有关更详细的回答,看看这篇文章,它解决了我的问题,这似乎与你的关系: https://stackoverflow.com/a/35879541/4977476
答案 1 :(得分:0)
我的理解(可能是错误的,我刚开始使用Angular2)是useAsDefault
充当重定向。但是在使用散列位置时不需要这样做,因为从服务器的角度来看,无论如何所有页面都在'/'上。
答案 2 :(得分:0)
问题似乎是,必须在提供者数组中定义LocationStrategy,正如SilverJan和KochFolie所指出的那样。见HashLocationStrategy not working as expected
答案 3 :(得分:0)
它对我有用:
...
import { RouterModule, Routes } from '@angular/router';
import {
APP_BASE_HREF,
LocationStrategy,
HashLocationStrategy
} from '@angular/common';
...
const appRoutes: Routes = [
{ path: '', loadChildren: './user-profile/user-profile.module#UserProfileModule'},
...
];
@NgModule({
...
providers: [ { provide: APP_BASE_HREF, useValue: "/core/user" }, {provide: LocationStrategy, useClass: HashLocationStrategy}],
bootstrap: [AppComponent]
})
export class AppModule { }