Angular路由顺序问题:'all-movies'路由行为不符预期求解
问题解释:路由匹配顺序导致的差异
Angular的路由是从上到下按顺序匹配的,只要匹配到第一条符合规则的路由,就会停止后续匹配,这就是问题的核心原因:
- 当
all-movies路由放在:id路由之后时,Angular会把all-movies当成是:id这个动态参数的具体值,直接触发:id路由对应的MovieResolver——而你的Resolver里应该包含了向API发送GET请求的逻辑,所以才会出现意外的API调用。 - 把
all-movies移到create路由上方(也就是所有动态参数路由之前)时,Angular会先匹配到这个明确的字符串路由,直接加载AllMoviesComponent,不会再去匹配后面的:id路由,自然就不会触发Resolver里的API请求,行为符合预期。
调整后的正确路由顺序示例:
const routes: Routes = [ { path: 'all-movies', component: AllMoviesComponent }, { path: 'create', component: CreateComponent, canActivate: [MovieGuardService] }, { path: ':id', resolve: { cres: MovieResolver, }, component: MovieComponent, }, { path: ':id/edit', resolve: { cres: MovieResolver, }, component: EditComponent, canActivate: [MovieGuardService] }, ];
内容的提问来源于stack exchange,提问作者Kristian Lalov
相关产品推荐
相关产品推荐

