DiP*_*Pix 4 angular-routing angular2-routing angular angular5
基于此处的LINK-在我的应用中,我已路由:
const routes: Routes = [
{ path: 'blog/:id', component: BlogComponent },
{ path: 'blog/moo', component: MooComponent },
];
Run Code Online (Sandbox Code Playgroud)
并且有以下信息:
如果我们访问/ blog / moo,即使它也匹配第一个blog /:id路径的路径,我们也会显示MooComponent。
重要说明:非参数化路由优先于参数化路由。
不幸的是,它不能那样工作。如果我要转到url,blog/moo则路由将moo视为Id并且将打开BlogComponent。
我想知道如何解决我有两个想法:
我可以改变路径。博客 / id和博客 / moo。
我可以使用UrlMatcher,但是当我更改previos url段时可能会有些问题。因此,此功能应做好充分的准备。
你怎么看?有任何想法吗?
根据Angular official documentation 参考这个
路由器使用第一个匹配获胜策略选择路由。通配符路由是路由配置中最不明确的路由。确保这是配置中的最后一条路由。
路由在配置中的顺序很重要,这是
设计使然。路由器在匹配
路由时会使用“先赢”策略,因此应将更具体的路由放在不那么具体的
路由之上。在上面的配置中,
首先列出具有静态路径的路由,然后是与
默认路由匹配的空路径路由。通配符路由排在最后,因为它与每个URL匹配,并且仅当没有其他路由最先匹配时才应选择通配符路由。
因此,您应保持相反的路线:
const routes: Routes = [
{ path: 'blog/moo', component: MooComponent },
{ path: 'blog/:id', component: BlogComponent },
];
Run Code Online (Sandbox Code Playgroud)
我想从上面的陈述中强调一点:
注意:
应将更具体的路线放置在不太具体的路线上方。
由于'blog / moo'更具体,因此您需要将其放在'blog /:id'上方