是什么原因导致此 Angular 16 电影应用程序中的属性不存在类型错误?

问题描述 投票:0回答:1

我一直在使用 Angular 16、TypeScript 和电影数据库 (TMDB) 开发 SPA。

我在显示电影详细信息时遇到问题。

app\services\movie-service.service.ts
我有:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment';
import { HttpClient } from '@angular/common/http';
import { MovieResponse } from '../models/Movie';
import { Genre, GenreResponse } from '../models/Genre';

@Injectable({
  providedIn: 'root'
})

export class MovieService {

  constructor(private http: HttpClient) { }


  public getLatestMovies(): Observable<MovieResponse> {
    return this.http.get<MovieResponse>(`${environment.apiUrl}/movie/now_playing?api_key=${environment.apiKey}`);
  }

  public getMovieDetails(id: Number): Observable<MovieResponse>{
    return this.http.get<MovieResponse>(`${environment.apiUrl}/movie/${id}?api_key=${environment.apiKey}`);
  }
}

app\models\Movie.ts
我有:

export interface Movie {
    id?: number;
    adult?: boolean;
    backdrop_path?: string;
    poster_path?: string;
    title?: string;
    original_title?: string;
    tagline?: string;
    overview?: string;
    genre_ids?: any;
    release_date?: string;
    runtime?: number;
    vote_average?: string;
}

export interface MovieResponse {
    results?: Movie[];
    total_pages?: number;
    total_results?: number;
    page?: number;
}

app\components\movie-details\movie-details.component.ts
我有:

import { Component } from '@angular/core';
import { MovieResponse, Movie } from '../../models/Movie';
import { MovieService } from '../../services/movie-service.service';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-movie-details',
  templateUrl: './movie-details.component.html',
  styleUrls: ['./movie-details.component.scss']
})
export class MovieDetailsComponent {

  constructor(private movieService: MovieService, private activatedRoute: ActivatedRoute) { }

  public movieResponse!: MovieResponse;
  public movie_id: Number = 0;

  public showMovieDetails() {
    this.movie_id = Number(this.activatedRoute.snapshot.paramMap.get('id'));

    this.movieService.getMovieDetails(this.movie_id).subscribe((response) => {
      this.movieResponse = response;
    });
  }

  ngOnInit() {
    this.showMovieDetails();
  }
}

app\components\movie-details\movie-details.component.html
中我尝试显示电影的标题:

<div *ngIf="movieResponse">
  <h1>{{ movieResponse?.original_title }}</h1>
</div>

问题

安装了所需的结果,我在浏览器中收到此错误:

TS2339: Property 'original_title' does not exist on type 'MovieResponse'.

问题

  1. 我做错了什么?
  2. 解决此问题最可靠的方法是什么?
javascript angular typescript
1个回答
0
投票

此属性“original_title”不存在于接口“MovieResponse”上,存在于接口“Movie”上 所以你必须改变这一行:

  public movieResponse!: MovieResponse;

至:

  public movieResponse!: Movie;
© www.soinside.com 2019 - 2024. All rights reserved.