Angular hash 和 path 策略一起——混合模式

标签 angular angular-router

是否可以让一些页面使用 PathLocationStrategy 而一些页面使用 HashLocationStrategy?

例如,登录名不会有任何哈希值,其余页面的 URL 中会有哈希值。

目前我没有看到一个简单的方法来做到这一点。它是所有带有或不带有散列的全部,如下例所示:

@NgModule({
    imports: [
        RouterModule.forRoot(LAYOUT_ROUTES, { useHash: false , enableTracing: DEBUG_INFO_ENABLED })
    ],
    exports: [
        RouterModule
    ]
})

谢谢

最佳答案

我在这里找到了我要找的东西:Angular2 - APP_BASE_HREF with HashLocationStrategy

我使用了 CustomLocationStrategy 并根据需要更改了 URL

import { Injectable } from '@angular/core';
import { HashLocationStrategy } from '@angular/common';

@Injectable()
export class CustomLocationStrategy extends HashLocationStrategy {
    prepareExternalUrl(internal: string): string {
        let url = this.getBaseHref() + '/#' + internal;
        if (internal === '/login') {
            url = this.getBaseHref() + internal;
        }
        return url;
    }
}

和 index.html

...
    <base href="./" />
...

关于Angular hash 和 path 策略一起——混合模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896018/

相关文章:

javascript - 在Angular js中的ng-init中添加多维对象

angular - 如何在 Angular 2/5 中的自定义标签上应用 CSS?

css - 在 Angular 5 的路由器导出中仅呈现组件模板

angular - 如何在 Angular 6 中使用模拟封装更改子组件样式?

angular - Firestore : Joins vs Firestore pricing

具有延迟加载问题的 Angular 嵌套路由

javascript - 在 AngularJS 中通过状态链路由的正确方法是什么?

angular - ActivatedRoute 订阅第一个子参数观察者

angular - Angular 路由如何优先于静态站点上的文件路径

angular - Webpack Bundle Analyzer 给出错误 EACCES