Angular 错误TS2322:类型';对象';不可分配给类型';电影';?角度7
我很抱歉用我愚蠢的问题分散我的注意力。我最近刚刚学习Angular 2+,但仍然不了解所有内容。 我看了这个问题的其他答案,但它们对我没有帮助。我有一个函数,返回一个列表和列表中的一个单独的项 服务代码:Angular 错误TS2322:类型';对象';不可分配给类型';电影';?角度7,angular,typescript,angular7,Angular,Typescript,Angular7,我很抱歉用我愚蠢的问题分散我的注意力。我最近刚刚学习Angular 2+,但仍然不了解所有内容。 我看了这个问题的其他答案,但它们对我没有帮助。我有一个函数,返回一个列表和列表中的一个单独的项 服务代码: constructor(private http: HttpClient) { } getMovies() { return this.http.get(this.baseUrl); } getMovie(id: number) { return this.http.get(this.bas
constructor(private http: HttpClient) { }
getMovies() {
return this.http.get(this.baseUrl);
}
getMovie(id: number) {
return this.http.get(this.baseUrl + id);
}
返回列表的组件
private movies = [];
constructor(private movieService: MovieService) {}
ngOnInit() {
this.getMovies();
}
private getMovies() {
this.movieService.getMovies()
.subscribe((response: any) => {
this.movies = response.results;
});
}
以及返回列表项的my组件:
movie = new Movie();
constructor(
private movieService: MovieService,
private activeRoute: ActivatedRoute) {
}
ngOnInit(): void {
this.getMovie();
}
getMovie(): void {
const id = +this.activeRoute.snapshot.paramMap.get('id');
this.movieService.getMovie(id)
.subscribe(movie => this.movie = movie);
}
无论我做什么,以及我如何没有重写代码,我都会得到相同的错误
src/app/page/movie detail/movie detail.component.ts(34,27)中出现错误:错误TS2322:类型“Object”不可分配给类型“movie”。
“对象”类型可分配给很少的其他类型。你的意思是用“any”类型吗?
src/app/page/movie detail/movie detail.component.ts(34,27):错误TS2322:类型“Object”不可分配给类型“movie”。
“对象”类型可分配给很少的其他类型。你的意思是用“any”类型吗?
类型“Object”中缺少属性“page”。
如何纠正这个错误,或者至少在你可以阅读的地方,看看它是如何做到的?我有一个API请求,返回以下内容:
{"page": 1,
"results": [
{
"poster_path": "/9O7gLzmreU0nGkIB6K3BsJbzvNv.jpg",
"adult": false,
"overview": "Framed in the 1940s for the...",
"release_date": "1994-09-10",
"genre_ids": [
18,
80
],
"id": 278,
"original_title": "The Shawshank Redemption",
"original_language": "en",
"title": "The Shawshank Redemption",
"backdrop_path": "/xBKGJQsAIeweesB79KC89FpBrVr.jpg",
"popularity": 5.446135,
"vote_count": 5250,
"video": false,
"vote_average": 8.32
},
{
"poster_path": "/lIv1QinFqz4dlp5U4lQ6HaiskOZ.jpg",
"adult": false,
"overview": "Under the direction o...",
"release_date": "2014-10-10",
"genre_ids": [
18,
10402
],
"id": 244786,
"original_title": "Whiplash",
"original_language": "en",
"title": "Whiplash",
"backdrop_path": "/6bbZ6XyvgfjhQwbplnUh1LSj1ky.jpg",
"popularity": 9.001948,
"vote_count": 2072,
"video": false,
"vote_average": 8.28
}
],
"dates": {
"maximum": "2016-09-01",
"minimum": "2016-07-21"
},
"total_pages": 33,
"total_results": 649
}
我想我在服务中出错了,因为当我显示列表和列表中的一个单独项目时,我没有得到页面。但是我没有发现如何做得不同,或者这些选项不再起作用。您可以在get函数中指定您的类型
return this.http.get<Movie>(this.baseUrl);
getMovies(): Observable<Movie> {
return this.http.get(this.baseUrl);
}
返回this.http.get(this.baseUrl);
或者在函数中指定它
return this.http.get<Movie>(this.baseUrl);
getMovies(): Observable<Movie> {
return this.http.get(this.baseUrl);
}
getMovies():可观察{
返回this.http.get(this.baseUrl);
}
或者两者都做
getMovies(): Observable<Movie> {
return this.http.get<Movie>(this.baseUrl);
}
getMovies():可观察{
返回this.http.get(this.baseUrl);
}
因为您使用的是HttpClient
,所以必须提供返回结果的必要转换,如中所示,其中显示了如何设置组件和服务提供商来调用和接收http JSON结果。要么更改返回this.http.get(this.baseUrl+id)
强类型返回this.http.get(this.baseUrl+id)代码>在movieservice的getMovie
方法中。为此,您需要将Movie
类导入到您的服务中。或者您可以将响应对象movie
键入.subscribe(movie=>this.movie=movie)组件的getmovie()
方法中的code>。Typescript显示此错误,因为您试图将this.movie
类型的this.movie
分配给默认的对象
类型。返回的API响应似乎是针对getMovies
函数的,而不是getmovie
。您可能希望将其解析为不同的结构,或者至少将结果
直接放入Movie[]
数组中。