src/app/components/home/home.component.ts:17:14 — ошибка TS2339: свойство ‘subscribe’ не существует для типа ‘void’

#angular #typescript #api #http #angular-cli

#angular #машинописный текст #API #http #angular-cli

Вопрос:

Я новичок в этой области, каждый день учусь у вас, сегодня у меня возникла эта проблема, но я читал другой пост, но я не могу понять, что происходит. Я покажу вам свой сервис и домашний компонент.

Я пытаюсь распечатать эти данные. https://www.thecocktaildb.com/api/json/v1/1/random.php

Обслуживание

 import { Injectable } from '@angular/core';
//Get Data from API
import { HttpClient } from '@angular/common/http';
//MAP Array OF OBJECTS
import { map } from 'rxjs/operators';

@Injectable({
  //Providing this service into app.MODULE
  providedIn: 'root'
})
export class CocktailService {

  constructor(private http: HttpClient) {

    console.log('Cocktail SERVICE READY')

  }

  getRandomCocktail() {
    this.http.get('https://www.thecocktaildb.com/api/json/v1/1/random.php')
        .pipe(map ( data => {
          return data['drinks'].srtDrink;
        }));
        // .subscribe( resp => {
        //   console.log(resp);
        // })
  }
}

  

Домашний компонент (проблема с подпиской, здесь)

 import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { CocktailService } from '../../services/cocktail.service';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent {

  cocktailData: any[] = [];
  constructor( private http: HttpClient,
                private cocktail: CocktailService ) {

        this.cocktail.getRandomCocktail()
        .subscribe( (data: any) => {
          this.cocktailData = data
          return this.http.get('https://www.thecocktaildb.com/api/json/v1/1/random.php');
        });
   }
}

  

Я буду очень признателен за вашу помощь, чтобы понять, что здесь происходит с .subscribe
Нужно ли подписываться из компонента? Я получаю данные в службу, я потерян.
Я следую руководству, но использую другой API.

Заранее спасибо.

Комментарии:

1. getRandomCocktail() не возвращает запрос. Добавьте return : return this.http.get(... . Также, пожалуйста, публикуйте код в виде фрагментов вместо скриншотов. Это затрудняет воспроизведение ошибки.

2. Ваш getRandomCocktail ничего не возвращает… Вставьте «return» перед «this.http.get.(‘…» . Вам также нужен возвращаемый тип Observable<T>. Также, чтобы помочь отладке, избавьтесь от вашего канала в вашей службе (верните его, когда он будет запущен). Просто попросите службу выполнить http-вызов и вернуть этот результат как указанный тип. Если вы не знаете возвращаемый тип, используйте Observable<any> . Удачи