Я пытаюсь расширить класс Http для своего приложения Ionic2-Angular2. Основная проблема связана с получением элемента из (локального | сеанса) Хранения, которое в Ionics2 возвращает Promise, и мне пришлось преобразовать его в Observable (или, по крайней мере, я думаю, это из-за этого), чтобы сделать расширение постоянным с типом возвращаемого значения для каждой функции класса, который я расширяю.Как расширить класс Http Angular2 для его настройки (в проекте Ionic2)
getCustomRequest(url:string, method:string, options?: RequestOptionsArgs, body?:any):Observable<any>{
let headers = new Headers({'Content-Type': 'application/json'});
return Observable.fromPromise(
this.storage.get("authToken").then(
data => {
console.log('Token '+data);
headers.append("Authorization", 'Token '+data);
return this.getNewReq({method, headers, body, url}, options);
},
error => {
console.log('no token!');
return this.getNewReq({method, headers, body, url}, options);
}
)
);
}
private getNewReq(reqOptObject, options):Request{
let reqOpt = new RequestOptions(reqOptObject);
if (options) {
reqOpt = reqOpt.merge(options);
}
return new Request(reqOpt);
}
request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {
return super.request(url, options);
}
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>{
return this.getCustomRequest(url, 'POST', options, body)
.map(newReq => { console.log(newReq); return this.request(newReq); });
}
сообщение об ошибке [возвратная линии this.getCustomRequest (URL ...]: Тип «Наблюдаемое>» не присваиваемый типа «Наблюдаемого» Типа «Наблюдаемый» не может быть назначен для типа «Response. ». Свойство„типа“отсутствует в типе „наблюдаемых“.
Почему только слияние я думаю, что Concat также будет работать правильно @Gunter –
Я не хотел сказать, что это единственный возможный способ, просто «карта» не будет работать здесь, и это «слияние» будет. 'concat' тоже кажется прекрасным. –
Теперь он дает мне эту ошибку, когда загружена страница и ни один запрос не выполнен. 'EXCEPTION: Uncaught (in prom): [object PositionError]' – Elisa