У меня есть службы angular в приложении Angular2/TypeScript, которые не знают о местонахождении http-сервисов - что, очевидно, требуется.
Для целей тестирования мне нужно запустить мое приложение TypeScript с несколькими целевыми объектами - это может быть либо localhost (для тестирования), либо облачная среда. Цель состоит в том, чтобы переключить весь запрос с одного адреса на другой с однострочным изменением исходного кода. Для приемлемого решения не требуется добавлять целевое местоположение в качестве значения констант во всех сервисах angular.
Я нашел хороший пример, как это сделать Angular 2 - Динамически найти базовый url для использования в http-запросах (услугах)
С версией 2.0.0-beta.6 из Angular2 вы можете переопределить метод слияния
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-запросов - базовый URL-адрес в POST не был затронут (браузер отправляет запрос хост-серверу JavaScript вместо требуемой http-цели).
Как динамически изменять адрес базового url для POST-запросов в angular 2?