组件类变量的初始化

时间:2017-03-06 21:24:16

标签: angular typescript

我从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?

那么差异是什么,以及什么是对的?

谢谢

1 个答案:

答案 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被触发之前可能没有准备好的任何内容。