2

由于一个非常愚蠢的原因,我从今天早上开始就处于一个大问题中。这应该有效,但我不明白是什么阻止了它。无论如何,下面的代码

我的解析器:

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 方法并没有被执行,它只是跳转到方法的关闭处,然后返回到调用组件。换句话说,如果我在解析器方法上放置一个调试器,它会被命中但永远不会进入其中。它似乎只是跳过它。

因此,如您所见,它不会在控制台中显示任何消息,例如“解析器方法命中”。

是的,我在模块的提供者中添加了 UserResolver。

4

1 回答 1

1

我希望你没有在 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();
  }
}
于 2020-03-14T11:52:27.593 回答