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,这种问题已解决,无需添加任何东西
我通过添加#到我的路线来解决该问题,例如http://localhost:3000/#/profile/1,您可以尝试做同样的事情。也许有人可以更好地解决此问题。无论如何,我的解决方案是添加HashLocationStrategy到AppModule提供程序:
{ provide: LocationStrategy, useClass: HashLocationStrategy }
Run Code Online (Sandbox Code Playgroud)
当然,在此之前,您需要导入LocationStrategy和HashLocationStrategy:
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)
那很简单。
当您在地址栏中刷新或手动复制粘贴 URL 时,您需要有服务器端配置(可能是服务器端路由)来识别和重定向(使用PathLocationStrategy)到目标页面。
Angular 路由在客户端,如果你想对工作条件做同样的事情,你需要使用HashLocationStrategy
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |