Подтвердить что ты не робот

Свойство 'subscribe' не существует в типе '() => Наблюдаемый <any>'

служебный файл

import { Observable } from 'rxjs/Rx';
import { Http,Response} from '@angular/http';
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/Map';

@Injectable()
export class VideoService {

   private geturl = '/api/videos';
   constructor(private _http:Http) { }

   getvideos() {
       return this._http.get(this.geturl).map((response:Response) => {
          response.json()
       });
   }
}

здесь метод подписки, показывающий эту ошибку

import { VideoService } from '../video.service';
import { Component, OnInit } from '@angular/core';
import { Video } from '../video';
import { Observable } from 'rxjs/Observable';


@Component({
    selector: 'app-videocenter',
    templateUrl: './videocenter.component.html',
    styleUrls: ['./videocenter.component.css']
})
export class VideocenterComponent implements OnInit {
    videos: any;
    onselectvideo: Video;
    switch: boolean = false

    constructor(private videoserv: VideoService) {
        //console.log(this.videos);
    }
    onselect(vid: any) {
        this.switch = true;
        this.onselectvideo = vid;
        console.log(vid);
    }
    ngOnInit() {
         this.videos = this.videoserv.getvideos .subscribe((response) => {
             this.videos = response;
         });
    }

}

У меня есть служебный файл, в котором я должен вызвать свой API для получения API, и когда я собираюсь подписать метод в другом классе, где я вызываю этот сервисный метод getvideos(), то он показывает ошибку, что свойство "подписка" не существует для типа() => наблюдаемый

4b9b3361

Ответ 1

Вы не вызываете метод getVideos. Вы вызываете subscribe для ссылки на функцию getVideos, а не для возвращаемого значения. Позвоните subscribe после того, как вы позвоните getVideos():

ngOnInit() {
    this.videoserv.getvideos().subscribe((response) => {
         this.videos = response
    });
}

Ответ 2

ngOnInit() {
    this.videoserv.getvideos().subscribe((response) => {
         this.videos = response
    });
}

Вы должны вызывать метод getvideos() в службе videoserv. Вы пропустили (), getvideos - это метод, а не свойство.