首页 文章

角度2中的URL路由

提问于
浏览
1

我正在使用棱角2.1.1 . 我在我的应用程序中使用角度路由 . 它工作正常 . 当我点击菜单然后它正确路由 . 但问题是,当我在地址栏中键入URL而不是单击菜单时,我收到错误消息 .

我认为问题是,当我键入URL并按Enter键时,浏览器会向服务器发送请求 . 但路由配置在客户端 . 所以服务器响应时出现错误信息 .

在角度1中,URL中有一个#限制浏览器将请求发送到服务器 . 但在角度2中,URL中没有# .

我可以配置服务器,以便每个URL重定向到根URL . 但那不是解决方案 . 我无法为任何网址添加书签 .

我该如何解决问题?

2 回答

  • 0

    Angular2也有 # ,与 HashLocationStrategy 一起使用,似乎你正在使用 PathLocationStrategy .

    如果使用PathLocationStrategy,请确保将服务器配置为提供请求的URL响应 .

    您可以在应用中使用 HashLocationStrategy(#) ,如下所示,

    @NgModule({
      imports: [
        BrowserModule,
        FormsModule,
        RouterModule.forRoot(routes, { useHash: true })  // ...<<<---here
      ],
      declarations: [
        AppComponent
      ],
      bootstrap: [ AppComponent ]
    })
    export class AppModule {
    }
    

    进一步阅读: - https://angular.io/docs/ts/latest/guide/router.html寻找 HashLocationStrategy

  • 1

    您可以更改 locationStrategy .

    默认设置是 PathLocationStrategy ,但您也可以使用 HashLocationStrategy

    RouterModule.forRoot(yourRoutes, { useHash: true })
    

    官方文件:https://angular.io/docs/ts/latest/guide/router.html#!#-hashlocationstrategy-

相关问题