gpt4 book ai didi

javascript - 在 Angular2 中使用生成的 Swagger TypeScript Rest Client

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

我正在使用 Angular 2 和 TypeScript 开发一个 Meteor 网络应用程序。为了使用 REST API,我使用 Swagger Codegen 生成了客户端代码。不幸的是,GitHub 上没有样本, 如何使用其余客户端。

我有一个 Angular 2 View 组件,它正在注入(inject) Angular 2 服务 (ProductTreeService) 和生成的 API(均标记为“@Injectable”):

@Component({
selector: 'panel-product-selection',
template,
providers: [ProductTreeService, UserApi],
directives: [ProductTreeComponent]
})

export class PanelProductSelectionComponent
{
private categoriesProductsTree: Collections.LinkedList<CategoryTreeElement>;
private productTreeService: ProductTreeService;
private userApi: UserApi;

constructor(productTreeService: ProductTreeService, userApi: UserApi)
{
this.productTreeService = productTreeService;
this.userApi = userApi;
}

ngOnInit(): void
{
//...
}
}

虽然只能访问 Angular 服务并且一切正常,但当我注入(inject) UserApi 时应用程序崩溃了。 UserApi 和 ProductTreeService 之间的唯一区别是构造函数:该服务没有构造函数参数,生成的 Api class有:

constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string) {
if (basePath) {
this.basePath = basePath;
}
}

那么如何注入(inject)生成的 API 呢?

最佳答案

经过进一步研究,我得到了解决方案。其余客户端的构造函数UserApi期望 HTTP 提供程序如下:

constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string) {
if (basePath) {
this.basePath = basePath;
}
}

来自 Java,我认为也许必须在注入(inject)此 API 的构造函数中以某种方式初始化此提供程序。事实上,这个初始化必须在包含注入(inject)组件的 NgModule 中完成,如 thread 中所述。 .

这个解决方案对我有用。

关于javascript - 在 Angular2 中使用生成的 Swagger TypeScript Rest Client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372921/

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