HashLocationStrategy 在路由时不生成 # 个位置?

2024-01-02

我正在运行 Angular 2 beta.0,并且正在搞乱路由。这是我所拥有的

应用程序组件:

import {Component, provide} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {FORM_DIRECTIVES, CORE_DIRECTIVES} from 'angular2/common';
import {Http, Response, HTTP_PROVIDERS} from 'angular2/http';
import {RouteConfig, Location, LocationStrategy, HashLocationStrategy, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router';

import {HomeComponent} from './components/home';
import {RowsComponent} from './components/rows';
import {ColumnsComponent} from './components/columns';
import {TableComponent} from './components/table';

@Component({
  selector: 'app',
  directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES],
  templateUrl: '/app/views/root.html',
  providers: [ROUTER_PROVIDERS]
})
@RouteConfig([
  {path:'/',       name: 'Home',     component: HomeComponent},
  {path:'Rows',    name: 'Rows',     component: RowsComponent},
  {path:'Columns', name: 'Columns',  component: ColumnsComponent},
  {path:'Table',   name: 'Table',    component: TableComponent}
])
class AppComponent {
  public title = 'Responsive Layout';
  public SelectedTab = 'Home';

  constructor(location: Location) {
    //location.go('Rows');
  }
}

bootstrap(AppComponent, [
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass: HashLocationStrategy})
]);

每个教程和 API 参考似乎都指向我,就像我上面所做的那样。我也有<base href="/app/" />在我的index.html 的头部。这是我的RouterLinks

  <ul class="nav navbar-nav">
    <li [class.active]="SelectedTab=='Home'"><a [routerLink]="['Home']" (click)="SelectedTab='Home'">Home</a></li>
    <li [class.active]="SelectedTab=='Rows'"><a [routerLink]="['Rows']" (click)="SelectedTab='Rows'">Rows</a></li>
    <li [class.active]="SelectedTab=='Columns'"><a [routerLink]="['Columns']" (click)="SelectedTab='Columns'">Columns</a></li>
    <li [class.active]="SelectedTab=='Table'"><a [routerLink]="['Table']" (click)="SelectedTab='Table'">Table</a></li>
  </ul>

路由的行为就像它应该的那样。我没有收到任何错误。当我单击引导导航栏中的这些条目之一时,我看到视图已切换并显示正确的模板,并且它们的组件已运行并正在绑定。然而,尽管使用HashLocationStrategy in my bootstrap(...)调用时,URL 仍然是“HTML5 样式”:localhost:8080/app/Rows当它应该是localhost:8080/app/#/Rows.

我相信如果我希望我的用户能够为特定视图添加书签并返回它,我需要使用基于 # 的旧方法。如果我允许/app/Rows然后刷新页面会导致 404 因为Rows不存在于app folder.


我尝试了你的代码,它有效

我的代码如下:

boot.ts

import {bootstrap}    from 'angular2/platform/browser'
import {provide} from 'angular2/core';
import {AppComponent} from './app.component'
import {ROUTER_PROVIDERS, LocationStrategy, 
        HashLocationStrategy,
        PathLocationStrategy,
        APP_BASE_HREF, } from 'angular2/router'


bootstrap(AppComponent,[
     ROUTER_PROVIDERS,
     provide(APP_BASE_HREF, { useValue: '/' }),
     provide(LocationStrategy, {useClass : HashLocationStrategy})
]);

-

app.ts

import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';

@Component({
  selector:'second',
  template: `<h1>second</h1>`
})

export class SecondComponent{}

@Component({
   selector: 'home',
   template: `<h1>hello</h1>`
})

export class HomeComponent{}

@Component({
   directives : [ROUTER_DIRECTIVES],
   selector: 'my-app',
   template: 
    `<a [routerLink]="['Home']">home</a>
     <a [routerLink]="['Second']">Second</a>
     <router-outlet></router-outlet>
    `
})


 @RouteConfig([
   {path :'/' ,name: 'Home', component: HomeComponent},
   {path :'/second', name : 'Second', component : SecondComponent}

  ])

 export class AppComponent { }

我发现你的问题,删除这一行

providers : [ROUTER_PROVIDERS]

细节我不知道为什么,也许当你两次使用 ROUTERPROVIDERS 时 Angular 无法处理,期待有人可以帮助你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HashLocationStrategy 在路由时不生成 # 个位置? 的相关文章

  • 角度路由器导航然后重新加载

    所以我想在导航到特定路线后重新加载应用程序 我使用 router navigate 根据用户角色导航到特定路线 效果很好 但如果来自登录页面 我必须在路由后重新加载页面 不是每次用户打开该特定路线时 此处重新加载是为了更新页面语言取决于用户
  • 在 Angular 4+ 中处理两个 URL(矩阵 && 查询)参数

    目前我们在我的 Angular 4 应用程序中使用矩阵参数 Google Analytics 在读取 URL 时出现问题 所以我们决定将其更改为查询参数 然而 旧的符号 矩阵 必须可访问并重定向到新的符号并将此类事件保存到数据库中 我看到三
  • 如何在 Angular 2 中重新加载分页页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何重新加载 Angular 2 上的当前页面 如果 iam 在第 2 页 分页 并刷新页面 它将显示第 1 页 URL 页面加载 但我想刷
  • 为什么我的node_modules中有@angular/core,但仍然出现此错误?

    我从 angular io 下载了一个示例项目 从这里https angular io generated zips cli quickstart cli quickstart zip https angular io generated
  • 如何使用 Angular2 路由

    我正在尝试编写一个单页应用程序 但无法使路由正常工作 我尝试使用许多教程 但考虑到 Angular2 仍处于测试阶段 它们似乎很快就过时了 似乎只要我添加对路由器指令或路由器配置或路由器提供程序的任何引用 该应用程序就会停止工作 并且浏览器
  • 如何测试 Angular2 中是否存在路由?

    在 Angular2 中如何检查路由是否存在 我有一种方法可以记住如果用户未经授权则导航到哪条路线 登录时我有 this router navigate this authService redirectUrl 但我只想在redirectU
  • 如何将不存在的链接重定向到 Angular 2 中的主页?

    如果用户输入不存在的链接 我希望页面重定向到主页 我该怎么做 谢谢 RouteConfig path home name Home component HomeComponent path about name About componen
  • router-outlet 不是已知元素

    以下代码有效 app module ts import NgModule from angular core import HttpModule from angular http import AppComponent from app
  • 如何获取Angular2 RC5中的路线参数

    我已将我的 angular2 项目升级为RC5 using angular cli webpack 我提供的路由如下 const appRoutes Routes path project manager component Project
  • Angular 2 路由引发 404 错误

    HTML5 推送状态意味着刷新 URL 或在浏览器中输入直接 URL 当我使用以下命令运行我的 Angular 应用程序时效果非常好 npm start 来自 VS 2015 命令提示符的命令 但是 当我在 IIS 上部署相同的应用程序并更
  • 如何在 angular2 中导航到新选项卡

    是否有一个参数可以提供给路由器以便路由器 navigate 将在浏览器中的新选项卡 窗口中打开 按照指示创建路线here https angular io docs ts latest guide router html 设置您的app r
  • Angular 4 中的 ID 路由

    我在 Angular 4 中的路由方面需要帮助 我想像这样显示 URL 本地主机 4200 user 1 如果我单击第一个用户的查看详细信息 我对如何做到这一点有点困惑 我已经在下面的代码中尽力了 但它仍然不起作用 应用程序路由 modul
  • Angular 2/4 中的嵌套路由

    我正在开发一个应用程序 我打算具有以下结构 MAIN main container main routes NCF lazy loaded routes for it s subapps ACNP lazy loaded Component
  • Angular2 路由 - 当路由更改时保持组件的状态[重复]

    这个问题在这里已经有答案了 我有一个应用程序 其视图位于路由后面 我需要能够从路由更改时的位置继续 但返回后 组件处于初始状态 有什么办法可以保持组件的状态吗 update 2 现在已针对新路由器修复了这个问题 Angular 2 3 ht
  • 如何在ng2 Guard canActivate中获取目标路由?

    如何获取用户尝试在角度 2 的 canActivate 防护中打开的路线 我怎样才能让警卫监视每个路线参数的变化 例如 路线内的 id 发生变化吗 import Injectable from angular core import Obs
  • Angular 2 角色和权限

    我在我的项目中使用了 angular2 和 laravel 5 3 在laravel中 当用户登录服务器时 将发送用户的权限以处理角度授权 所以我写了一个守卫来保护无法访问的用户的路由 这是我的警卫类代码 export class Acce
  • HashLocation 策略有什么缺点吗?

    我目前正在学习 Angular 我已经使用 HashLocation 实现了路由器 因为 PathLocation 在 Apache 服务器中不起作用 我浏览了各种帖子来解决这个问题 但最终不得不选择 Apache 的 HashLocati
  • 如何在navigationStart路由器事件中暂停路线更改

    在我的应用程序中 我有从包 节点模块 公开的路由 因此 我无法将 canActivate 或 canDeactivate 用于节点模块内定义的路由 因此 我开始订阅应用程序组件中的所有路线更改 并根据条件将用户重定向到不同的路线 由于条件有
  • Web 应用程序中的 PathLocationStrategy 与 HashLocationStrategy

    使用的优点和缺点是什么 PathLocationStrategy 默认的 HTML 5 PushState 样式 HashLocationStrategy 哈希 URL 样式 例如 使用哈希位置策略将阻止通过 ID 滚动到元素的功能 但某些
  • Angular2 - 更改位置而不触发路线

    我有一个使用服务来加载项目列表的视图 我总是只显示一个项目 并使用 gt 按钮在项目之间移动 有没有办法在不触发 Angular 路由系统的情况下更改浏览器地址栏中的地址并将记录添加到浏览器历史记录中 我知道如果我使用 location g

随机推荐

  • 使用 D3 过渡逐渐更改显示为 svg 文本的数字

    我正在寻找一种简单的方法来逐渐更改使用 d3 显示为 svg 文本的数字的值 var quality 0 06 14 qSVG is just the main svg element qSVG selectAll txt data qua
  • 计算日期差(以周为单位)(Javascript)

    我有两个字符串 1387050870 and 2012 12 15 我如何计算这两个日期之间的差异 以周为单位 52 I tried Math round 1387050870 Math round new Date 2012 12 15
  • ActiveRecord:查询未对 STI 子类使用正确的类型条件

    我有一组 STI 子类继承自User基类 我发现在子类定义内的某些条件下 对子类的查询不能正确使用type健康 状况 class User lt ActiveRecord Base end class Admin lt User Rails
  • 获取 PostgreSQL 中受 UPDATE 影响的行数

    SO 和许多博客上都提出了这个问题的各种变体 但没有一个提供直接的答案 我希望有一个 我正在更新 PostgreSQL 9 0 来自 CodeIgniter PHP 框架 sql order UPDATE meters SET billed
  • C++ 错误:抛出“std::bad_alloc”实例后调用终止

    我编写了下面粘贴的代码 以按照说明的顺序执行以下任务 读取输入文件并计算其中的条目数 创建适当大小的数组 大小等于条目数 返回到输入文件的开头并再次读取 将条目存储在数组中 打印出文件中的条目数以及条目本身 这是我的代码 include
  • 什么触发(或生成)KeyEvent.ACTION_MULTIPLE?

    的文档KeyEvent ACTION MULTIPLE http developer android com reference android view KeyEvent html ACTION MULTIPLE says 连续发生多个重
  • mysql 多个或不喜欢

    我有一个 wordpress 插件 它本质上创建一个 mysql 查询并将结果返回到 wordpress 它是用户驱动的 因此最终可能会出现带有多个 NOT LIKE 的大型查询 从而导致查询非常慢 我可以用来改进的任何建议 SELECT
  • 在 IIS 6 上的 WCF REST Api 上启用 PUT(无 .svc 文件)

    在 IIS 6 上 如何允许 WCF Rest API 上的 PUT 操作 由于我没有 svc 文件 我在 global asax 上向服务类添加了一条路由 因此我无法允许在 IIS 6 上对 svc 扩展名进行 put 操作 打开IIS管
  • 如何找到标签等于字符串变量的树视图节点?

    首先 我想感谢所有花时间查看此帖子并尝试提供帮助的人 我在互联网上搜索过 但找不到选择标签文本与字符串变量的文本相同的树视图节点的示例 在 MSDN 上我找到了消息 TVM GETISEARCHSTRING 但我不知道它是否可以用来解决我的
  • Matlab:使用矩阵运算代替for循环

    在 Matlab 中是否可以仅使用矩阵运算来创建 NxN 矩阵 Mat 就像下面的两个 foor 循环所做的那样 Mat zeros N for row 1 N for col 1 N if row 1 1 lt col col lt N
  • SIFT和SURF特征提取使用MATLAB实现

    我正在使用matlab做一个古钱币识别系统 到目前为止我所做的是 转换为灰度 使用高斯滤波器去除噪声 对比度增强 使用 canny 边缘检测器进行边缘检测 现在我想提取特征进行分类 我想选择的特征是圆度 面积 颜色 SIFT 和 SURF
  • Rails attr_accessible 不适用于 :type?

    我尝试在表单中设置单表继承模型类型 所以我有一个属性选择菜单 类型 值是 STI 子类的名称 问题是错误日志不断打印 警告 无法批量分配这些受保护的属性 类型 所以我将 attr accessible type 添加到模型中 class C
  • JVM_FindSignal函数不断分配本机内存

    我部署在 Linux 机器上的 tomcat8 中的 java Web 应用程序一直在泄漏本机内存 我尝试使用 jemalloc 分析来检测泄漏源 如下所述 https github com jeffgriffith native jvm
  • 锁屏下追踪加速度计

    是否可以在锁定屏幕下跟踪加速度计值 我设法编写了一个简单的应用程序 它使用计时器从 1 计数到 100 该计时器触发一个事件 在该事件上我递增计数器 但是 当我为加速度计的 ReadingChanged 事件注册一个处理程序时 一旦屏幕锁定
  • 在 ASP.NET MVC DisplayFor Html Helper 中显示空值“NULL”

    有没有办法获得 Html DisplayFor如果模型项的值为 则在视图中显示 NULL 的值null 以下是我当前正在处理的 详细信息 视图中的某个项目的示例 现在 如果 描述 的值为 不显示任何内容 null div class dis
  • ehcache 持久化到磁盘问题

    我想用 Java 中的 ehcache 做一些我认为应该非常简单的事情 但我已经花了足够的时间让自己对文档感到沮丧 将值写入磁盘持久缓存 关闭 再次启动并读取该值 这是我的 Java 函数 private static void testC
  • Webpack + Express + EJS:错误:找不到模块“。”

    我正在使用 webpack typescript 和 ejs 编写一个 Express Web 应用程序 当点击应该提供 ejs 文件的路由之一时 我收到以下错误 Error Cannot find module at webpackMis
  • ActiveSync 客户端 Java 实现

    我的公司正在开发一个桌面和移动电子邮件客户端项目 该客户端可以通过用户或服务器管理员的最少配置连接到不同的邮件服务器 由于我们想要支持 Microsoft Exchange 因此我们似乎必须在 Java 中实现 ActiveSync 协议
  • 使用电话号码格式 NaN 屏蔽 EditText,就像 PhoneNumberUtils 中一样

    我想让用户在 editText 中输入电话号码 以便每次用户输入号码时动态更改格式 也就是说 当用户输入最多 4 位数字 例如 7144 时 editText 显示 714 4 我希望每当用户输入数字时 editText 就会动态更新为格式
  • HashLocationStrategy 在路由时不生成 # 个位置?

    我正在运行 Angular 2 beta 0 并且正在搞乱路由 这是我所拥有的 应用程序组件 import Component provide from angular2 core import bootstrap from angular