サービスファイル
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に存在しません
getVideos
メソッドを呼び出していません。戻り値ではなく、subscribe
の関数参照でgetVideos
を呼び出しています。 getVideos()
を呼び出した後、subscribe
を呼び出します。
ngOnInit() {
this.videoserv.getvideos().subscribe((response) => {
this.videos = response
});
}
ngOnInit() {
this.videoserv.getvideos().subscribe((response) => {
this.videos = response
});
}
videoserv
サービスでgetvideos()
メソッドを呼び出す必要があります。 ()
が欠落していました。getvideos
はプロパティではなくメソッドです。