我从angular2开始,我想知道这段代码
export class HeroesComponent implements OnInit {
// Version 1
myHero: Hero = new Hero('Superman', 'Clark Kent');
// Version 2, 3
// myHero: Hero;
constructor() {
// Version 2
// this.myHero = new Hero('Superman', 'Clark Kent');
}
ngOnInit() {
// Version 3
// this.myHero = new Hero('Superman', 'Clark Kent');
}
}
现在我已将myHero初始化为顶部,但我想知道,顶部是什么,构造函数内部应该包含什么以及ngOnInit内部是什么?
因为据我所知,如果它位于顶部,它会立即被执行,与构造函数相同,并且ngOnInit?
那么差异是什么,以及什么是对的?
谢谢
答案 0 :(得分:5)
在声明和构造函数中分配值是完全相同的,实际上是这个的编译版本:
class HeroesComponent implements OnInit {
myHero: Hero = new Hero('Superman', 'Clark Kent');
}
时:
var HeroesComponent = (function () {
function HeroesComponent() {
this.myHero = new Hero('Superman', 'Clark Kent');
}
return HeroesComponent;
}());
至于那个与ngOnInit
相比,它取决于Hero
的构造函数是否依赖于在ngOnInit
被触发之前可能没有准备好的任何内容。