Javascript Angular 2动态更改post请求中的基本url

Javascript Angular 2动态更改post请求中的基本url,javascript,typescript,angular,Javascript,Typescript,Angular,我在Angular2/TypeScript应用程序中有angular服务,它们不知道http服务的位置——这显然是必需的 出于测试目的,我需要使用多个目标运行我的TypeScript应用程序-它可以是localhost(用于测试)或云环境。目标是在源代码中更改一行代码后,将所有请求从一个地址切换到另一个地址。 可接受的解决方案不应要求在所有角度服务中添加目标位置作为常量值 我找到了一个很好的例子 使用Angular2的2.0.0-beta.6版,可以覆盖合并方法 import {BaseRequ

我在Angular2/TypeScript应用程序中有angular服务,它们不知道http服务的位置——这显然是必需的

出于测试目的,我需要使用多个目标运行我的TypeScript应用程序-它可以是localhost(用于测试)或云环境。目标是在源代码中更改一行代码后,将所有请求从一个地址切换到另一个地址。 可接受的解决方案不应要求在所有角度服务中添加目标位置作为常量值

我找到了一个很好的例子

使用Angular2的2.0.0-beta.6版,可以覆盖合并方法

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from 'angular2/http';

export class CustomRequestOptions extends BaseRequestOptions {
    merge(options?:RequestOptionsArgs):RequestOptions {
        options.url = 'http://192.123.24.2:8080' + options.url;
        return super.merge(options);
    }
}
您可以通过以下方式注册此类:

bootstrap(AppComponent, [HTTP_PROVIDERS,
    provide(BaseRequestOptions, { useClass: CustomRequestOptions })
]);
但是

它适用于GET请求,但不适用于POST请求-POST中的基本url未被触及(浏览器将请求发送到JavaScript主机服务器,而不是所需的http目标)

如何在Angular 2中动态更改POST请求的基本url地址?

试试这种方法

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from 'angular2/http';

export class CustomRequestOptions extends BaseRequestOptions {
    merge(options?:RequestOptionsArgs):RequestOptions {
        options.url = 'http://192.123.24.2:8080' + options.url;
        var result = super.merge(options);
        result.merge = this.merge;
        return result;
    }
}

bootstrap(AppComponent,[HTTP\u提供程序,
//=RC.4
{提供:请求选项,useClass:CustomRequestOptions}
]);

我给你一个非角度的答案。那会对你有用的。你想让我把它贴出来作为答案吗?谢谢。我没想到会有这样的结果。merge=this.merge;是需要的,但确实需要
bootstrap(AppComponent, [HTTP_PROVIDERS,
    // < RC.4
    provide(RequestOptions, { useClass: CustomRequestOptions }),
    // >= RC.4
    { provide: RequestOptions, useClass: CustomRequestOptions }
]);