我需要创建一个可以在不同的angular2应用程序之间共享的服务 . 此服务将访问其余的api并包装其数据,以便角度应用程序可以使用它 . 如果我使用angular2 http服务,那么我需要将整个angular2作为服务的依赖项 .
目前我希望将服务层作为单独的npm包,以便我可以在多个项目之间重用它 .
有没有更好的方法来实现可重用性,而不是将整个angular2库安装到服务包?
您不需要使用Angulars Http . 您可以构建自己的类来调用XMLHttpRequest或直接使用fetch API或任何其他执行AJAX请求的库 .
Angular将Http移动到它自己的包中(来自Angular2主仓库)https://github.com/angular/http(正在进行中)
您可以在HTTP服务层中创建与Http类的公共API匹配的接口,然后在引导Angular应用程序时将 Http 实例传递给服务 .
Http
interface MyHttp { get(url: string, options?: RequestOptionsArgs): Observable<Response>; ... } let myHttpService = new MyHttpService(); bootstrap(AppComponent1, [ HTTP_PROVIDERS, provide(MyHttpService, { deps: [Http], useFactory: (http) => { if(!myHttpService.http) { myService.http = http; } return myService; }) })] );
然后在你的组件和服务中使用它
export class MyComponent { constructor(private _myHttp: MyHttpService) { this._myHttp.doSomething(); } }
提示:如果您还想将 MyHttpService 注入 Http (对于您的控制之外的组件和服务请求 Http 使用您的 MyHttpService ),则提供商需要以不同的方式查看 .
MyHttpService
1 回答
您不需要使用Angulars Http . 您可以构建自己的类来调用XMLHttpRequest或直接使用fetch API或任何其他执行AJAX请求的库 .
Angular将Http移动到它自己的包中(来自Angular2主仓库)https://github.com/angular/http(正在进行中)
您可以在HTTP服务层中创建与Http类的公共API匹配的接口,然后在引导Angular应用程序时将
Http
实例传递给服务 .然后在你的组件和服务中使用它
提示:如果您还想将
MyHttpService
注入Http
(对于您的控制之外的组件和服务请求Http
使用您的MyHttpService
),则提供商需要以不同的方式查看 .