手动粘贴URL Angular 2路由时无法加载文件?

Amr*_*him 5 routing paste manual angularjs angular

我进行此路由配置

@RouteConfig([
  {
    path:'/profile/:id',name:'Profile',component:ProfileComponent
  },
  // else
  {
    path: '/**',
    redirectTo: ['Home']
  }
])
Run Code Online (Sandbox Code Playgroud)

并使用它来浏览参数为{id:5}的个人资料

<a [routerLink]="['Profile', {id:5}]" >Go </a>
Run Code Online (Sandbox Code Playgroud)

我添加到 index.html 这个基地

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

它成功导航到

http://localhost:3000/profile/1
Run Code Online (Sandbox Code Playgroud)

并且工作正常

但是当我在浏览器中粘贴相同的URL手册并点击输入时,给我这个错误

在此处输入图片说明

发生错误,因为未从根目录加载文件

http://localhost:3000
Run Code Online (Sandbox Code Playgroud)

但是浏览器试图将它们加载到相对URL目录中

http://localhost:3000/profile/1
Run Code Online (Sandbox Code Playgroud)

更新:我现在正在使用角度7,这种问题已解决,无需添加任何东西

Ste*_*ota 5

我通过添加#到我的路线来解决该问题,例如http://localhost:3000/#/profile/1,您可以尝试做同样的事情。也许有人可以更好地解决此问题。无论如何,我的解决方案是添加HashLocationStrategyAppModule提供程序:

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

当然,在此之前,您需要导入LocationStrategyHashLocationStrategy

import { LocationStrategy, HashLocationStrategy } from '@angular/common';
Run Code Online (Sandbox Code Playgroud)

如果使用的是RC4或更低版本,请将其添加到bootstrap方法中,例如:

bootstrap(
AppComponent,
    [
        { provide: LocationStrategy, useClass: HashLocationStrategy }
    ]);
Run Code Online (Sandbox Code Playgroud)


mic*_*yks 5

那很简单。

当您在地址栏中刷新或手动复制粘贴 URL 时,您需要有服务器端配置(可能是服务器端路由)来识别和重定向(使用PathLocationStrategy)到目标页面。

Angular 路由在客户端,如果你想对工作条件做同样的事情,你需要使用HashLocationStrategy