我在这里做错了什么?
我收到此错误:
TS2339:财产'发现'类型'响应'。
上不存在
我搜索的是,当我想通过标题而不是ID来查找电影时,我无法使用find?
我现在正在做的是我希望能够点击电影标题,然后进入另一个组件/侧面,我可以在其中显示有关电影/图片的信息。
来自movie.service.ts的代码
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/first';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/operator/filter';
import { Movie } from './shared/Movie';
interface IMovieData {results : Movie;}
export interface IVideoData {results : IVideo[];}
export interface IVideo {'id': string; 'key':string; 'name':string; 'site':
string; 'type':string; }
@Injectable()
export class MovieService {
private movie : any;
private key : string;
constructor(private http : Http) { }
getMovies(): Observable<Movie[]> {
return this.http.get('http://api.themoviedb.org/3/discover/movie?
primary_release_date.gte=2014-09-15&primary_release_date.lte=2014-10-
22&api_key=mykey')
.map((res: Response) => res.json()['results']);
}
public getMovie(title: string): Observable<Movie> {
return this.http.get("http://api.themoviedb.org/3/search/movie?query=" +
title + "&api_key=mykey")
.map(movies => movies.find(movie => movie.title == title));
}
来自moviedetail.component.ts的代码
import { Component, OnInit } from '@angular/core';
import { Http, Response} from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { Movie } from '../Shared/Movie';
import { MovieService } from '../movie.service';
@Component({
selector: 'app-moviedetail',
templateUrl: './moviedetail.component.html',
styleUrls: ['./moviedetail.component.css']
})
export class MoviedetailComponent implements OnInit {
public movie : Movie;
constructor(
private http: Http,
private movieService : MovieService,
private route: ActivatedRoute,
private router: Router
)
{
}
ngOnInit() {
this.movieService.getMovie(this.route.snapshot.params['title']).subscribe(success=>{this.movie=success;});
}
public gotoMovies(){
this.router.navigate(['/movielist']);
}
}