我有一个名为HeaderService
(header.service.ts)的服务,该服务将URL
作为构造函数参数,并具有方法getManifest
,该方法返回一个JSON
。现在,JSON
有一个array
的URL。我必须为它们击中URLs
和getManifest
。现在,我计划为每个对应的URL
创建一个单独的HeaderService
实例,然后调用getManifest
,但事实证明Angular 6不提供该功能(我来自Java背景我当时的想法有点像Java。因此,如何动态创建HeaderService
的实例?请注意,在注射时我无法这样做,因此factory
选项在这里似乎对我没有用。
此外,我不希望更改HeaderService
的代码,因为它是使用Swagger CodeGen生成的,其次,我在其他一些类中编写了getManifest(URL: string)
(例如{{1 }})将导致代码重复。
注意:我已经提到了先前发布的问题(like this one),但他们讨论了如何在注入时创建多个实例 。我的情况不同。
答案 0 :(得分:0)
我认为您只需要将该服务创建为一个新对象(最后是一个简单的类)并使用它来做您需要做的事情,让我举个例子更清楚:
extern int number;
int main(int argc, char *argv[])
{
printf("%d",number);
return 0;
}
我不确定您到底需要做什么,如果您需要做更多的事情而不是使用箭头功能,只需使用方括号并放置逻辑即可。
另一件事是,如果您需要调用一个返回可观察值的方法,则可以将它们转换为promise并以并行或可观察的方式运行它们:
const service = new HeaderService('originalURL');
service.getManifest().forEach(url => new HeaderService(url));
一些链接:
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise/all
https://www.learnrxjs.io/operators/combination/forkjoin.html