Ваш get(url)
метод ничего не возвращает. Вот почему вы испытываете эту проблему.
отметить также, что вы должны не быть указанием any
типа. Компилятор поймал бы эту ошибку, если бы вы позволили ей вывести тип возврата, который был бы void
, но вместо этого вы указали возвращаемый тип как any
, коротко замыкающий процесс вывода типа без причины.
Я понимаю, что многие угловые примеры делают это, но эти примеры не являются примерами хорошего кода типа TypeScript.
Предполагая http
в вашей первой службе является ссылкой на официальную угловую службу 2 HTTP вы хотите что-то вроде
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
import 'rxjs/add/operator/mergeMap';
export class HttpClient {
get(url: string) {
const headers = new Headers();
this.createGeneralHeaders(headers);
return Observable
.fromPromise(this.storage.get('token'))
.flatMap(
name => this.http.get(`${url}?access-token=${name}`, {headers})
);
}
}
В исходном коде, get
было ничего не возвращает, и обновлять его, чтобы вернуть результат звонка then
приведет к возврату Promise
в Observable
вместо Observable
. Поскольку потребительский код вызывал map
, я предполагаю, что было намерено вернуть Observable
. Этого можно достичь, используя Observable.fromPromise
. Другим способом было бы вернуть Observable
непосредственно из службы хранения, но не зная внутренних компонентов этой услуги, вышеуказанный вариант проще.
Правильно составите свой код. –
Ive отформатировал его –