【问题标题】:Angular 2 RC5 <base href="..."> breaks routingAngular 2 RC5 <base href="..."> 中断路由
【发布时间】:2016-08-19 12:35:53
【问题描述】:

我偶然发现了一个与&lt;base href="..."&gt; 问题相关的问题。 Angular 2 似乎严重依赖这个标签。然而,标签本身会以不适合我的情况 (there's a lot properly described info on this issue on the internet) 的方式影响 &lt;svg&gt;...&lt;/svg&gt; 声明。但是当我删除我的&lt;base href="..."&gt; 时,应用程序会立即中断。

在潜伏了几天的解决方案之后,我找到了让我的应用程序在没有&lt;base href="..."&gt; 的情况下至少以某种方式工作的方法

@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 {
}

但是,如果没有&lt;base href="..."&gt;,应用程序在路由方面变得不太稳定。基本上,当我尝试从非默认路由重新加载页面时,它会中断并抛出异常“达到最大堆栈大小”。

我无法用 plunkr 重现问题,但我也无法在没有 &lt;base href="..."&gt; 的情况下使 standard angular tutorial 工作

这里是链接

Original plunkr

Modified plunkr

如果您打开修改后的控制台,您会看到一个错误。

互联网上绝对没有关于此问题的信息,我从未与&lt;base href="..."&gt; 打交道,而且我是 angular 2 的新手。那么,调查此问题的最佳起点是什么?

【问题讨论】:

  • 您解决或报告过这个问题吗?
  • 我没有报告它,我也没有用官方 Angular 2 Release 测试过它

标签: javascript html svg angular


【解决方案1】:

您可以提供

{ provide: APP_BASE_HREF, useValue: '/' }

让路由器覆盖 &lt;base href="..."&gt;,而 SVG 仅依赖于 &lt;base href="..."&gt;

另见https://github.com/angular/angular/issues/8939

【讨论】:

  • 我想说的是我已经使用了您的解决方案,但是它破坏了 angular 2 路由...
  • 对不起,我错过了你已经拥有了。如果这不起作用,我认为值得报告错误(使用 Plunker 重现)。
  • 谢谢,没问题,我在识别问题的根源并在 plunkr 中重现它时遇到了真正的问题......
  • 我几乎一整天都在试图弄清楚发生了什么,没有运气......
  • Plunker 有点不同,因为它需要&lt;base href="..."&gt;APP_BASE_HREF 的当前路径。如果您可以在本地复制包含与 Plunker 相同代码的新项目,那么我猜这应该足够作为 repo 案例。
猜你喜欢
  • 2016-12-19
  • 2016-12-22
  • 1970-01-01
  • 2021-07-22
  • 2017-01-02
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 2016-11-23
相关资源
最近更新 更多