为什么 angular 路由将标签 # 添加到 url
Why angular routing adds hashtag # to the url
使用的版本
Angular 版本:7.10
@angular/router": "~7.2.0",
问题是
为什么 angular 将 hashTag 添加到 url。
示例:
const routes: Routes = [
{
path: 'aktion',
component: AktionComponent
}
确实匹配 url
http://localhost:4200/aktion
但不匹配 url
http://localhost:4200/#/aktion
如果您已将此行添加到应用程序模块,那么它会添加 #
RouterModule.forRoot(AppRoutes, { useHash: true }),
在应用模块中,这样做
@NgModule({
imports: [
// other imports
RouterModule.forRoot(routes, { useHash: true }) //make it false
],
declarations: [
],
providers: [
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
如果您使用的是 PathLocationStrategy
,则服务器应配置为发送 error page
也作为 index.html
,因为通常这会导致 404
和 Angular 应该解析路由。
为了避免麻烦,可以使用 HashLocationStrategy
,因为# 之后的任何部分都会被服务器忽略,并且只会从浏览器中解析。因此你有#。
要删除它,您可以更新 RouterModule configuration
,如其他答案所示。
RouterModule.forRoot(AppRoutes, { useHash: false }),
使用的版本
Angular 版本:7.10 @angular/router": "~7.2.0",
问题是
为什么 angular 将 hashTag 添加到 url。
示例:
const routes: Routes = [
{
path: 'aktion',
component: AktionComponent
}
确实匹配 url
http://localhost:4200/aktion
但不匹配 url
http://localhost:4200/#/aktion
如果您已将此行添加到应用程序模块,那么它会添加 #
RouterModule.forRoot(AppRoutes, { useHash: true }),
在应用模块中,这样做
@NgModule({
imports: [
// other imports
RouterModule.forRoot(routes, { useHash: true }) //make it false
],
declarations: [
],
providers: [
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
如果您使用的是 PathLocationStrategy
,则服务器应配置为发送 error page
也作为 index.html
,因为通常这会导致 404
和 Angular 应该解析路由。
为了避免麻烦,可以使用 HashLocationStrategy
,因为# 之后的任何部分都会被服务器忽略,并且只会从浏览器中解析。因此你有#。
要删除它,您可以更新 RouterModule configuration
,如其他答案所示。
RouterModule.forRoot(AppRoutes, { useHash: false }),