因为一个非常愚蠢的原因,从今天早上开始我就陷入了大麻烦。这应该是可行的,但我不明白是什么阻止了它。不管怎样,下面的代码
我的解析器:
export class UserResolver implements Resolve<any> {
constructor(private fakeApi: FakeApiService) { }
resolve():Observable<any> {
console.log('resolver method hit');
return Observable.empty();
}
}我的模块:
const routes: Routes = [
{path:'',component:UserComponent,resolve:{users:UserResolver}}
]
const leafManifest:IManifestCollection = [
{path:'',component:UserComponent}
]不要担心服务或调用组件,因为它们甚至不会出现在画面中。我正在调用这个路由,resolve方法被击中了。但是,resolve方法不会执行,它只是跳到该方法的关闭位置,然后返回到调用组件。换句话说,如果我把一个调试器放在解析器方法上,它会被命中,但永远不会进入它的内部。它似乎只是跳过了它。
所以,正如你所看到的,它不会在控制台中显示任何类似“解析程序方法命中”的消息。
是的,我已经在模块的提供者中添加了UserResolver。
发布于 2020-03-14 19:52:28
我希望你没有在NgModule下指定你的解析器。
@NgModule({
providers: [
UserResolver
]
})下面是一个示例:https://alligator.io/angular/route-resolvers/
更新的解决方案:
尝尝这个
@Injectable()
export class UserResolver implements Resolve<Observable<any>> {
constructor(private fakeApi: FakeApiService) { }
resolve() {
console.log('resolver method hit');
return Observable.empty();
}
}https://stackoverflow.com/questions/60682139
复制相似问题