角路由器在重定向之前加载组件?

时间:2019-08-20 04:47:06

标签: angular redirect routing

我正在创建一个仅包含4条路线的Angular应用程序: '/一二三四'。 任何其他路径都应重定向到'/ one'-包括''。

我的AppComponent模板如下:

// Some HTML
...
<some-component>
...
// More HTML
...
<router-outlet><router-outlet>

路由器出口当然是与当前路径关联的组件('/ one','/ two','/ three'或'/ four')的呈现位置。

我尝试通过在路由模块中添加“ redirectTo”来应用重定向,例如:

  { path: 'one', component: OneComponent},
  { path: 'two', component: TwoComponent},
  { path: 'three', component: ThreeComponent},
  { path: 'four', component: FourComponent},
  { path: '', redirectTo: '/one'}

当我尝试加载“” URL时,实际上确实将其重定向到“ / one”,并且OneComponent中的所有内容均按预期方式呈现,但AppComponent中的所有内容均未呈现。浏览器日志显示错误。

然后我尝试使用canActive防护进行重定向,并得到了相同的结果。

我的问题似乎是“某些组件”具有某些逻辑,如果逻辑无效,该逻辑将失败。我可以解决此问题,但我认为在请求无效路径之前简单地重定向将更容易。似乎重定向并不会绕过这个问题。

我知道我没有提供任何实际的代码来研究,但是我的问题是: 给定无效的路由,是否有可能在路由器重定向之前呈现(或尝试)AppComponent?

3 个答案:

答案 0 :(得分:0)

我想重现您的问题,但失败了。但是我想,您忘了添加pathMatch:'full'

{ path: '', redirectTo: '/one', pathMatch: 'full'}

答案 1 :(得分:0)

能否请您分享错误?

据我所知,每次遇到这种错误时,它将出现在您的情况onecomponent的最终组件中,请在完成路由后尝试重新加载页面,一切正常还是还是有错误? / p>

答案 2 :(得分:0)

感谢大家的帮助。 我的问题更理论化。我想得更多,无论路由是否有效,都应该加载AppComponent,因为路由和重定向只会影响应在“路由器出口”中呈现的任何组件。

所以我只需要在“某些组件”中修正逻辑即可。

再次感谢