我正在試驗Angular 2 rc1
並有一個非常簡單的組件。 所顯示的失敗:Angular 2 rc1組件初始化
import { Component, OnInit } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Movie } from "./movie";
import { MovieService } from "./movieService";
import "rxjs/add/operator/map";
@Component
({
selector: 'my-app',
template: `
<p>{{mov.Rating}}</p>
<ul>
<li *ngFor="let movie of movies" >
{{movie.Title}} - {{movie.Rating}}
</li>
</ul>
`,
providers: [MovieService]
})
export class AppComponent implements OnInit
{
public name: string;
public mov: Movie;// = { Title: "bla", Rating: 3 };
public movies: Movie[];
constructor(private movieService: MovieService) {}
public ngOnInit()
{
this.movieService.getMovies()
.subscribe(movies =>
{
this.movies = movies;
this.mov = this.movies[1];
});
}
}
如果我做初始化mov
變量(並且沒有其他變化),它會工作得很好。
當它失敗時,瀏覽器(chrome,firefox或IE)會拋出一個異常(「TypeError:Can not read property'Rating'of undefined」)並結束執行。 MovieService
確實需要幾毫秒的實際API調用,在此期間mov
確實未定義。 在Angular1中,這不是問題;它什麼都不會顯示。
我試過撥打movieService
致電constructor
但這沒什麼區別。
這是預期的行爲,一個錯誤,或者我錯過了什麼,並且有一種方法可以防止它(除了初始化mov
變量)?