* ngIf没有将我的对象视为电影对象?

时间:2018-04-14 08:44:43

标签: angular

我遇到了这个问题,看起来我的* ngIf没有看到我的对象作为电影对象,我不明白为什么?也许还有另外一个问题?

我已尝试过这两种方法,但它仍然无法运作,你能告诉我我在这里做错了吗?

我正在记录,当我点击一部电影时,我可以在日志和我的网址中看到我获得了正确的电影ID。

Movieservice

  public getMovie(id: number): Observable<Movie> {
    return this.http.get("https://api.themoviedb.org/3/movie/" + id + 
      "? 
    api_key=mykey")
    .map((res: Response) => res.json())
    .map(({id, title}) => <Movie>(this.movie));

  }



getMovie(id: number): Observable<Movie> {
  return this.http.get("https://api.themoviedb.org/3/movie/" + id + "?api_key=mykey")
  .map((response: Response) => <Movie>(response.json()));
}

moviedetail组件

  ngOnInit() {
    this.movieService.getMovie(this.route.snapshot.params['id']);
  } 

我的html文件包含* ngIf

<div class="container">
<div *ngIf="movie">
    <div class="row">
        <div class="col-md-5">
            <h1>Movie:</h1>
            <b>Title:</b> {{movie.title}}<br>
            <button (click)="gotoMovies()">Back</button>
        </div>
        <div class="col-md-3"></div>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

好像你没有为this.movie指定价值,Observable本质上也是懒惰的。当你初始化它们时它们只是作为函数使用,它们只会在你订阅时执行。

ngOnInit() {
  this.movieService.getMovie(this.route.snapshot.params['id']).subscribe(
    movie => this.movie = movie
  );
}