以下是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>
答案 0 :(得分:31)
构造函数定义实例化对象时要提供的参数。在TypeScript中,您还可以添加private
或public
等修饰符来定义相同的时间类属性,并使用提供的值设置它们的值。
例如:
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中,构造函数用于依赖注入。关联的装饰器(@Component
或Injectable
)收集元数据(@Inject
中的类型或提示),以确定要对对象进行实例化的内容。
请注意,构造函数不是组件生命周期的一部分。 Angular2稍后可以在此级别设置属性...
答案 1 :(得分:4)
控制器构造函数主要用于依赖注入/服务,如您所提及的(在我的应用程序中),用于根据服务本身初始化复杂的默认值。由于构造函数在初始化控制器模板之前运行 - 因此不会准确呈现变量,因此需要ngOnInit
和其他类似方法。这些' bootstrap'应该使用方法来执行正常的构建工作。职责,所以模板/视图可以访问数据。
关于服务构造函数,我的一些人正常使用构造函数,并根据现有的用户数据初始化服务的各个部分,因为它们的行为更像标准类。
这些答案将有所帮助: