Я использую Angular 2.3.Угловой 2 Делать и обрабатывать запрос Ajax для конфигурации до того, как модуль загружен BootStrapped
Я хотел бы сделать запрос ajax для загрузки данных в свою конфигурационную службу и разрешить инсталляцию службы конфигурации другим компонентам и службам после получения и обработки ответа ajax.
Я попробовал два метода до сих пор, ни один не работает:
В первую очередь, я использую эту технику в модуле приложения:
providers: [
Config2Service,
{
provide: APP_INITIALIZER,
deps: [ Config2Service ],
multi: true,
useFactory: (configService: Config2Service) => {
return() => configService.initialize();
}
}
]
В этом примере инициализации() возвращает обещание, которое фабрика завершает в функции, прежде чем возвращать эту функцию. Это была единственная комбинация, которая работает. Следующие не работают: (1) возвращение config.initialize. (2) возвращает результат вызова configservice.initialize().
Не поймите меня неправильно, функция инициализации configService называется на ранней стадии, но обещанное обещание не ожидается; то при загрузке компонентов при попытке доступа к данным конфигурации в службе конфигурации сбои приложения не выполняются. Спустя некоторое время данные конфигурации появляются и обрабатываются должным образом, но к тому времени их слишком поздно, приложение разбилось.
Во втором случае, я удалил выше, и пытался сделать это:
let providers = [
{
provide: Http, useFactory: (backend: XHRBackend, options: RequestOptions) => {
return new Http(backend, options);
},
deps: [XHRBackend, RequestOptions]
},
BrowserXhr,
ConfigService,
XHRBackend,
{ provide: RequestOptions, useClass: BaseRequestOptions },
{ provide: ResponseOptions, useClass: BaseResponseOptions },
{ provide: XSRFStrategy, useValue: new CookieXSRFStrategy() }
];
let configService: ConfigService = ReflectiveInjector.resolveAndCreate(providers).get(ConfigService);
configService.initialize()
.then(configData => {
platformBrowserDynamic().bootstrapModule(MyAccountModule.factory(configService));
});
выше терпит неудачу с этой ошибкой: Unhandled Promise отбраковки: Не удается прочитать свойство «getCookie» в нуль в CookieXSRFStrategy. configureRequest
В примере SO я получил это, конкретная XSRFStrategy была вызвана NoopCookieXSRFStrategy, но я не могу найти это в папке @ angular/http. Я также не могу найти HTTP_PROVIDERS, из которого этот код возник, я думаю.
Я пробовал то, что я пытаюсь сделать, что мне не хватает?
Бинго. Спасибо. – IanT8