web-dev-qa-db-ja.com

プロパティ 'subscribe'はタイプ '()=> Observable <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()を呼び出している他のクラスのメソッドをサブスクライブしようとしているときに、プロパティタイプ()=> observableに存在しません

14
HASSAN MEHMOOD

getVideosメソッドを呼び出していません。戻り値ではなく、subscribeの関数参照でgetVideosを呼び出しています。 getVideos()を呼び出した後、subscribeを呼び出します。

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

videoservサービスでgetvideos()メソッドを呼び出す必要があります。 ()が欠落していました。getvideosはプロパティではなくメソッドです。

3
aogaga