Angular2在网址中没有哈希值

Emi*_*eba 9 html5 angular2-routing angular

现在,我的网站的网址看起来像这样,因为我正在使用此处描述的方法

HTTP://本地主机:4200 /#/ cadastro

是否可以删除网址中的哈希值而不会出现404错误?

编辑:路由器模块添加

const appRoutes: Routes = [
    { path: '', component: HomeComponent },
    { path: 'cadastro', component: CadastroNoivosComponent },
    { path: '**', component: HomeComponent }
];

export const routing = RouterModule.forRoot(appRoutes);
Run Code Online (Sandbox Code Playgroud)

AJT*_*T82 30

如果您使用的是Angular final,则哈希的原因可能是:

RouterModule.forRoot(yourRoutesHere, { useHash: true })
Run Code Online (Sandbox Code Playgroud)

所以通过删除可能有所帮助.

RouterModule.forRoot(yourRoutesHere)
Run Code Online (Sandbox Code Playgroud)

或者,如果您在提供者(在NgModule中)使用过:

{provide: LocationStrategy, useClass: HashLocationStrategy}
Run Code Online (Sandbox Code Playgroud)

只是删除它.

编辑,如果您需要LocationStrategy,请尝试更改HashLocationStrategyPathLocationStrategy:

{provide: LocationStrategy, useClass: PathLocationStrategy}
Run Code Online (Sandbox Code Playgroud)

更多关于LocationStrategy的信息

现在我已经看到了关于404问题的路线,您可以尝试更改以下内容

{ path: '**', component: HomeComponent }
Run Code Online (Sandbox Code Playgroud)

至:

{ path: '**', redirectTo: '', pathMatch: 'full' }
Run Code Online (Sandbox Code Playgroud)

更多关于路由的信息

还要检查index.html你已经设置了basehref,如下所示:

<base href="/">
Run Code Online (Sandbox Code Playgroud)

  • 它已经是这样的“RouterModule.forRoot(yourRoutesHere)”。如果我删除“{provide: LocationStrategy, useClass: HashLocationStrategy}”,我将在重新加载页面时收到 404 错误。 (2认同)

duk*_*636 9

如果您在此处描述使用PathLocationStrategy,则可以删除URL中的哈希值.

但摆脱404错误需要一些服务器端调整.一种快速简便的方法是将服务器配置为在http://yourhost/*请求表单的任何URL时加载主页.