首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Resolver Angular 5中未执行Resolver函数

在Resolver Angular 5中未执行Resolver函数
EN

Stack Overflow用户
提问于 2020-03-14 19:18:53
回答 1查看 217关注 0票数 2

因为一个非常愚蠢的原因,从今天早上开始我就陷入了大麻烦。这应该是可行的,但我不明白是什么阻止了它。不管怎样,下面的代码

我的解析器:

代码语言:javascript
复制
export class UserResolver implements Resolve<any> {
   constructor(private fakeApi: FakeApiService) { }
   resolve():Observable<any> {
     console.log('resolver method hit');
     return Observable.empty();
   }
}

我的模块:

代码语言:javascript
复制
 const routes: Routes = [
    {path:'',component:UserComponent,resolve:{users:UserResolver}}
 ]

 const leafManifest:IManifestCollection = [
    {path:'',component:UserComponent}
 ]

不要担心服务或调用组件,因为它们甚至不会出现在画面中。我正在调用这个路由,resolve方法被击中了。但是,resolve方法不会执行,它只是跳到该方法的关闭位置,然后返回到调用组件。换句话说,如果我把一个调试器放在解析器方法上,它会被命中,但永远不会进入它的内部。它似乎只是跳过了它。

所以,正如你所看到的,它不会在控制台中显示任何类似“解析程序方法命中”的消息。

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

EN

回答 1

Stack Overflow用户

发布于 2020-03-14 19:52:28

我希望你没有在NgModule下指定你的解析器。

代码语言:javascript
复制
@NgModule({
  providers: [
    UserResolver 
  ]
})

下面是一个示例:https://alligator.io/angular/route-resolvers/

更新的解决方案:

尝尝这个

代码语言:javascript
复制
@Injectable()
export class UserResolver implements Resolve<Observable<any>> {
  constructor(private fakeApi: FakeApiService) { }

  resolve() {
    console.log('resolver method hit');
     return Observable.empty();
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60682139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档