我正在构建一个单页的Angular 2.2.0应用程序,它将成为嵌入式网站的一部分。该网站将有六页,Angular SPA位于/application.html
。应用程序将在不同时间显示/隐藏各种组件,我正在使用路由器驱动。
我希望维护/application.html
网址,因为我不需要用户能够为SPA内的位置添加书签,因此无法将网络服务器配置为将“未找到”网址映射到某处否则,它会使SPA更好地与网站的其他部分共存。不幸的是,这不是Angular路由器的设计方式:它本身想要使用浏览器的地址栏。
我已经解决了两个这样的后果;特别是当我的代码跳转到一个新位置时,我正在使用skipLocationChange
属性,而我没有使用<a routerLink=...
工具在我的模板中有链接。但是,我还没有解决第三个问题:在启动时角度清除地址栏。
Angular的路由器似乎需要地址栏的初始值等于主机页面中给出的base
值。如果我有通常的<base href="/">
,则地址栏最初设置为example.com/
。如果我改为使用<base href="/application.html">
,则地址栏会初始化为example.com/application.html/
(请注意尾随/
;关闭但没有雪茄)。这一切都非常令人沮丧;没有理由使用路由器应该要求放弃控制地址栏。
有没有办法防止Angular 2路由器搞乱浏览器的地址栏?或者,如果我不使用路由器,有没有办法让程序状态确定各种组件是否出现和消失? (后者实际上是所有可能世界中最好的;路由器系统非常有限。)
答案 0 :(得分:1)
Routings的好处来自于通过URL进行的州管理。由于您不需要该状态管理,我根本不会使用路由。加载您的&#34;页面/视图&#34;通过
组件<page-one *ngIf="showPageOne"></page-one>, etc....
您仍然可以获得角度不加载未使用的组件的好处。否则,我会使用哈希策略。