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