何时在Angular2打字稿中创建构造函数?

时间:2016-05-18 08:14:57

标签: typescript angular

以下是Angular 2 docs

中的一些示例构造函数
export class AppComponent implements OnInit {
    title = 'Tour of heroes';
    heroes: Hero[];
    selectedHero: Hero;

    constructor(private heroService: HeroService) { }

    getHeroes() {
        this.HeroService.getHeroes().then(heroes => this.heroes = heroes);
    }
}

和...

class Car {
    constructor(engine, tires, doors){
        this.engine = engine;
        this.tires = tires;
        this.doors = doors;
    }
}

我不明白为什么以及何时在角度2 /打字稿中创建constructor()(我已经阅读了官方文档,他们为依赖注入和服务创建了构造函数)。 / p>

2 个答案:

答案 0 :(得分:31)

构造函数定义实例化对象时要提供的参数。在TypeScript中,您还可以添加privatepublic等修饰符来定义相同的时间类属性,并使用提供的值设置它们的值。

例如:

class Car {
  constructor(private engine:string, private tires:string, private doors:number){
  }
}

类似于:

class Car {
  constructor(engine:string, tires:string, doors:number){
    this.engine = engine;
    this.tires = tires;
    this.doors = doors;
  }
}

在Angular2中,构造函数用于依赖注入。关联的装饰器(@ComponentInjectable)收集元数据(@Inject中的类型或提示),以确定要对对象进行实例化的内容。

请注意,构造函数不是组件生命周期的一部分。 Angular2稍后可以在此级别设置属性...

答案 1 :(得分:4)

控制器构造函数主要用于依赖注入/服务,如您所提及的(在我的应用程序中),用于根据服务本身初始化复杂的默认值。由于构造函数在初始化控制器模板之前运行 - 因此不会准确呈现变量,因此需要ngOnInit和其他类似方法。这些' bootstrap'应该使用方法来执行正常的构建工作。职责,所以模板/视图可以访问数据。

关于服务构造函数,我的一些人正常使用构造函数,并根据现有的用户数据初始化服务的各个部分,因为它们的行为更像标准类。

这些答案将有所帮助: