http.get () не возвращает наблюдаемое - PullRequest
2 голосов
/ 02 июля 2019

ПРИМЕЧАНИЕ. Проблема, безусловно, заключается в том, что ionViewDidLoad () не выполняется, поскольку http.get получает наблюдаемое. Я пытаюсь получить наблюдаемое при выполнении запроса, чтобы позже получить ответ json , но я не получаю сообщение об ошибке, и в консоли браузера также ничего не отображается. Я не знаю, почему он ничего не возвращает.

Я перепробовал много URL и много раз проверял импорт. console.log без вставки данных home.page.ts


    import { ServicioService } from '../servicio.service';
    import { Observable } from 'rxjs';
    import { HttpClient } from '@angular/common/http';
    ...
    ionViewDidLoad(){
          const hola = this.servicio.goWiki(this.userInput).
          subscribe((response) => {
            console.log(response);
           });
        }

servicio.service.ts


    import { Injectable } from '@angular/core';
    import { map } from 'rxjs/operators';
    import { HttpClient } from '@angular/common/http';
    import { Observable } from 'rxjs';

    @Injectable()
    export class ServicioService {

        constructor(public http: HttpClient) {
            console.log('goin!');
        }

        goWiki(userInput): Observable<any>{
            return this.http.get('https://www.reddit.com/r/gifs/top/.json?limit=105sort=hot');
        }

app.module.ts


    import { ServicioService } from './servicio.service';
    import { HttpClientModule } from '@angular/common/http';

    imports: [HttpClientModule, BrowserModule, IonicModule.forRoot(), AppRoutingModule, ComponentesModule],
      providers: [
        ServicioService,...

Я просто надеюсь получить заметку, чтобы иметь возможность читать ее и извлекать из нее конкретные данные.

Ответы [ 4 ]

1 голос
/ 03 июля 2019

С Ionic 4 в Angular у вас больше нет крюка жизненного цикла ionViewDidLoad.Вместо этого используйте стандартный угловой крючок ngOnInit.

См. https://medium.com/@paulstelzer/ionic-4-and-the-lifecycle-hooks-4fe9eabb2864

Жизненные циклы в ионике 4

[...]

За исключением ionViewDidLoad (потому что это то же самое, что и ngOnInit), и для двух навигационных охранников все ловушки жизненного цикла из Ionic 3 все еще доступны

0 голосов
/ 04 июля 2019
**service.ts**
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

 constructor(public http: HttpClient) { }

getFirst(): Observable<any> {

return this.http.get('https://www.reddit.com/r/gifs/top/.json?limit=105sort=hot').pipe(map(res => {
  return res;
}));

}

0 голосов
/ 03 июля 2019

Похоже, что компоненту не хватает http в конструкторе, и вы пытаетесь вызвать службу неправильно.

Вам не нужно помещать это в настоящий метод.

0 голосов
/ 02 июля 2019

Вы получаете доступ к этому URL: 'https://www.json.org'

Возможно, здесь есть куча вещей, которые могут пойти не так.Одним из них может быть CORS.

Если ваше веб-приложение не разрешает CORS (общий доступ к запросам из разных источников), вы не получите ответ на вызов. По существу, вызов заблокирован браузером (проверьтеваш браузер).Первый вызов, если вы посмотрите на сетевой журнал, будет OPTIONS вместо get.По сути, веб-сайт должен возвращать операции Http, которые ему разрешено вызывать.

Попробуйте вызвать приложение локального сервера iis на вашем компьютере или на любом компьютере в том же домене, что и веб-приложение, http.getработа.

...