gpt4 book ai didi

Angular 解决错误错误 : Uncaught (in promise): TypeError: resolver is not a function

转载 作者:太空狗 更新时间:2023-10-29 19:27:59 25 4
gpt4 key购买 nike

我有一个从 api 和依赖于该解决方案的服务获取数据的解决方案。取决于解析的服务将向多个组件提供数据部分,并且预计仅在页面加载时运行一次。这是相关代码(省略了导入和一些注释):

product-details.service.ts

@Injectable()
export class ProductDetailsService {
private productDetails: ProductDetails;

constructor(route: ActivatedRoute) {
this.productDetails = route.snapshot.data['product'];
}

public getProductDetails(): ProductDetails {
return this.productDetails;
}
}

product-details.resolve.ts

@Injectable()
export class ProductDetailsResolve implements Resolve<ProductDetails> {

constructor(private httpService: HttpService) { }

resolve(route: ActivatedRouteSnapshot): Observable<ProductDetails> {
return this.httpService.getProductDetails(route.params['id']);
}

}

app-routing.module.ts

const routes: Routes = [
{ path: 'main/:id', component: MainComponent, resolve: { product: ProductDetailsService } },
];

@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }

some.component.ts

export class SomeComponent {
public value: number = 0;

constructor(private productDetailsService: ProductDetailsService) {
this.value = productDetailsService.getProductDetails().value;
}

}

当我运行该应用程序时,出现此错误:

core.es5.js:1020 ERROR Error: Uncaught (in promise): TypeError: resolver is not a function
TypeError: resolver is not a function
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.getResolver (router.es5.js:4559)
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.resolveNode (router.es5.js:4537)
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.runResolve (router.es5.js:4518)
at MergeMapSubscriber.project (router.es5.js:4285)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:120)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber._next (mergeMap.js:110)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at ArrayObservable.webpackJsonp.../../../../rxjs/observable/ArrayObservable.js.ArrayObservable._subscribe (ArrayObservable.js:114)
at ArrayObservable.webpackJsonp.../../../../rxjs/Observable.js.Observable._trySubscribe (Observable.js:171)
at ArrayObservable.webpackJsonp.../../../../rxjs/Observable.js.Observable.subscribe (Observable.js:159)
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.getResolver (router.es5.js:4559)
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.resolveNode (router.es5.js:4537)
at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.runResolve (router.es5.js:4518)
at MergeMapSubscriber.project (router.es5.js:4285)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:120)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber._next (mergeMap.js:110)
at MergeMapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at ArrayObservable.webpackJsonp.../../../../rxjs/observable/ArrayObservable.js.ArrayObservable._subscribe (ArrayObservable.js:114)
at ArrayObservable.webpackJsonp.../../../../rxjs/Observable.js.Observable._trySubscribe (Observable.js:171)
at ArrayObservable.webpackJsonp.../../../../rxjs/Observable.js.Observable.subscribe (Observable.js:159)
at resolvePromise (zone.js:795)
at resolvePromise (zone.js:766)
at zone.js:844
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (core.es5.js:3881)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:192)
at drainMicroTaskQueue (zone.js:602)
at <anonymous>

对这个错误的研究没有给我任何线索,而且我想不出 resolve 没有被确认为函数的任何原因。我在这里缺少什么吗?

最佳答案

当我在我的路由配置中不小心传递了一个 Guard 作为解析器时,我得到了这个错误:

resolve: { data: MyGuardService }

因此请检查您是否不小心通过了错误的类(class)。例如,如果你想要一个 canActivate 守卫,代码应该是这样的:

canActivate: [ MyGuardService ]

关于 Angular 解决错误错误 : Uncaught (in promise): TypeError: resolver is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com