无法在解析的服务中注入依赖项



我在我的Angular项目架构中遇到了这个特定的问题:

我有一个组件需要根据当前URL加载不同的服务。它是通过解析服务来完成的,就像下面的例子一样。

ChartRoutingModule

const routes: Routes = [
{
path: 'doctorspecialities',
component: ChartComponent,
resolve: {
service: DoctorSpecialitiesServiceResolver,
},
},
]
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: [DoctorSpecialitiesServiceResolver],
})
export class ChartRoutingModule {}

当用户输入特定url时,服务被解析:

DoctorSpecialitiesServiceResolver

@Injectable()
export class DoctorSpecialitiesServiceResolver implements Resolve<any> {
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return new DoctorSpecialitiesService();
}
}

服务在ActivatedRoute中。目前一切正常。但是我需要将HttpClient注入到这个服务中。在DoctorSpecialitiesService的构造函数中添加private _http: HttpClient会导致以下错误:

An argument for '_http' was not provided.

我想我应该在解析器中传递这个依赖,但我不知道我应该在哪里声明它。找不到任何能帮助我的东西。你能帮我一下吗?

您可以在解析器中注入HttpClient,然后将其传递给DoctorSpecialitiesService构造函数,如下所示:

@Injectable()
export class DoctorSpecialitiesServiceResolver implements Resolve<any> {
constructor(private http: HttpClient) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return new DoctorSpecialitiesService(this.http);
}
}

最新更新