Как получить данные из общего метода http get, который возвращает Observableв угловой версии 2,8 - PullRequest
0 голосов
/ 26 июня 2019

Angular версия 8.0.4

Как получить данные из универсального метода, который возвращает массив наблюдаемого типа T в angular?Это функция, которую я написал

Общий метод для получения данных

public getData<T> (path: string): Observable<T[]> {
        return this.http.get(this.baseUrl + path).subscribe();
        // return this.data;
        // var ddd: T[];
        // return this.http.get<Observable<T[]>>(this.baseUrl + path);

        // var data: any  = this.http.get(this.baseUrl + path).toPromise();
        // console.log(data)
        // return of(data);
    }

Это вызывающая функция

getRecords(): Observable<Trailers[]> {

        var k: any = this.httpService.getData<Trailers>("get_trailers");
        console.log(of(k));
        return of()
    }

В Angular 2 более старой версии было что-то вроде этого

public getObjects<T> (path: string): Observable<T[]>  {
        return this.http.get(this.baseUrl+path)
            .map((response: Response) => <T[]> response.json())
            .do(data => console.log('Retrieved data from: ' + this.baseUrl+path))
            .catch(error => this.handleError(error, this.router));
    } 
What is equivalent in angular 0.8 to this ?

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Угловая версия: 8.0.2

Функция может быть как,

get<T>(id: string): Observable<T> {
   return this.httpclient.get<T>(this.baseUrl+ '/' + id);
}

Вызывающий может быть,

this.service.get<MyModel>(id).subscribe((val:MyModel) => { ... // your business logic });
0 голосов
/ 26 июня 2019

Http метод Get возвращает Observables.Для чтения данных из Observables необходимо подписаться.Вот почему здесь используется метод subscribe ().

0 голосов
/ 26 июня 2019

В моем случае я использую Observable и Subscribe следующим образом.

Функция

getTestStatus() :Observable<any[]> {
  return this.httpClient.get(`${this.api}/demo/state`) as Observable<any[]>;
}

Вызов

let result;
this.getTestStatus().subscribe((res) => {
  result = res
  console.log(result);
});

Подписка работает как асинхронно / ожидание, если вы пытаетесьЧтобы распечатать некоторые данные из него, вы должны подписаться

надеюсь, что эта помощь, если нет, вы должны подождать других парней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...