Angular 2 RC5 <base href="..."> 打破了路由。

4
我遇到了与<base href="...">相关的问题。似乎Angular 2非常依赖于这个标签。然而,这个标签本身对<svg>...</svg>声明产生了影响,这种影响并不适合我的情况(在互联网上有很多关于这个问题的描述信息)。但是当我删除<base href="...">时,应用程序立即崩溃。
在苦苦寻找解决方案几天后,我终于找到了一种方法,可以使我的应用程序在没有<base href="...">的情况下至少能够正常工作。
@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    routing
  ],
  declarations: [
    AppComponent,
    HeroesComponent,
    DashboardComponent,
    HeroDetailComponent
  ],
  providers: [
    HeroService, {
      provide: APP_BASE_HREF, // <------------ this guy here saves the day
      useValue: '/'
    }
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {
}

然而,如果没有 <base href="...">,应用程序在路由方面变得不太稳定。基本上,当我尝试从非默认路由重新加载页面时,它会崩溃并抛出异常“达到最大堆栈大小”。
我无法使用 plunkr 复现问题,但也无法使 标准 Angular 教程 在没有 <base href="..."> 的情况下工作。
这里是链接: 原始的 plunkr 修改后的 plunkr 如果您打开修改后的控制台,您将看到一个错误。
互联网上绝对没有关于此问题的信息,我以前从未处理过 <base href="...">,而且我刚开始接触 Angular 2。那么,解决这个问题的最佳起点是什么?

enter image description here enter image description here


你解决或报告过这个问题吗? - Arjan
我没有报告过它,也没有在官方的Angular 2版本中进行测试。 - Lu4
1个回答

1

我想说的是,我已经使用了你的解决方案,但它破坏了Angular 2的路由... - Lu4
抱歉,我错过了你已经有那个的事实。如果那不起作用,我认为值得提交一个错误报告(并提供一个Plunker来重现)。 - Günter Zöchbauer
谢谢,没问题。但我确实遇到了一个问题,就是在 Plunkr 中无法确定问题的来源并进行复现。 - Lu4
我已经花了一整天的时间试图弄清楚发生了什么事,可惜没有成功… - Lu4
Plunker 有点不同,因为它需要 <base href="...">APP_BASE_HREF 的当前路径。如果您可以在本地新项目中复制 Plunker 中包含相同代码的情况,那么这应该足够作为一个存储库案例吧。 - Günter Zöchbauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接