我正在试验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
变量)?