我不知道为什么路由器不匹配给出的任何路由...我什至尝试了非常简单的路由,但是全部失败了。
我的路线(提取):
{
path: ':rootFolder/',
children: [
{
path: 'name/**',
component: MainComponent,
},
{
path: 'name/*', // Debugging only
component: MainComponent,
},
{
path: 'name', // Debugging only
component: MainComponent,
},
{
path: '',
component: MainComponent,
pathMatch: 'full',
},
],
},
{
path: ':rootFolder/:currentFolder/',
children: [
{
path: 'name/**',
component: MainComponent,
},
{
path: '',
component: MainComponent,
pathMatch: 'full',
},
],
},
此外,我可以肯定,这些路由已被路由器接受,就像我使用UrlMatcher
一样,我将获得正确的行为。我只想使用标准的内置解决方案,而不是这个...
解决这个问题是一回事,但是我很想学习为什么并且可能帮助别人...
答案 0 :(得分:3)
您可以通过以下方式启用路由调试:
声明设置对象
const settings: ExtraOptions = {
enableTracing: true,
};
,然后在声明路由器时使用它:
RouterModule.forRoot(routes, settings)],
这样做,您将在浏览器控制台中获得输出。
注意:您还可以内联压缩settings
对象。
答案 1 :(得分:2)
好的。因此,首先,配置本身存在问题。
问题出在父路径上。它们不能带有/
后缀。如果您从两条父路线中都删除了该路线,那么一切都会按预期进行。
因此将path: ':rootFolder/',
更改为路径:':rootFolder',
然后将path: ':rootFolder/:currentFolder/',
更改为path: ':rootFolder/:currentFolder',
const routes: Routes = [{
path: ':rootFolder',
children: [
{
path: 'name/**',
component: MainComponent,
},
{
path: 'name/*', // Debugging only
component: MainComponent,
},
{
path: 'name', // Debugging only
component: MainComponent,
},
{
path: '',
component: MainComponent,
pathMatch: 'full',
},
],
},
{
path: ':rootFolder/:currentFolder',
children: [
{
path: 'name/**',
component: MainComponent,
},
{
path: '',
component: MainComponent,
pathMatch: 'full',
},
],
}]
这是您推荐的Working Sample StackBlitz。
答案 2 :(得分:0)
删除“ /”
path: ':rootFolder',