Angular 2 динамически меняет базовый url в почтовых запросах
У меня есть службы 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?
Ответы
Ответ 1
Попробуйте этот путь
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_PROVIDERS,
// < RC.4
provide(RequestOptions, { useClass: CustomRequestOptions }),
// >= RC.4
{ provide: RequestOptions, useClass: CustomRequestOptions }
]);