angular 中初始化数据的正确位置
Correct place to initialize the data in angular
我需要专家的建议才能知道,我可以在哪里初始化 angular 中的变量?在 constructor
或 ngOnInit
中?还是两者都有?
这里是代码:
选项 => 1
constructor() {
this.name = 'Test Stock Company';
this.code = 'TSC';
this.price = 85;
this.previousPrice = 80;
this.positiveChange = this.price >= this.previousPrice;
this.favorite = false;
}
选项 => 2
ngOnInit() {
this.name = 'Test Stock Company';
this.code = 'TSC';
this.price = 85;
this.previousPrice = 80;
this.positiveChange = this.price >= this.previousPrice;
this.favorite = false;
}
或者两者混合会产生怎样的影响?
您应该始终使用 ngOnInit
,因为它属于 Angular 组件生命周期。在 ngOnInit
中,您可以访问 @Input
个变量。您可以通过 fixture.detectChanges()
.
在编写测试期间触发 ngOnInit
另一方面,构造函数与 Angular 无关,它是 TypeScript/JavaScript 语言的一部分。 Ctors 应该像许多其他语言一样只用于注入服务。
我需要专家的建议才能知道,我可以在哪里初始化 angular 中的变量?在 constructor
或 ngOnInit
中?还是两者都有?
这里是代码: 选项 => 1
constructor() {
this.name = 'Test Stock Company';
this.code = 'TSC';
this.price = 85;
this.previousPrice = 80;
this.positiveChange = this.price >= this.previousPrice;
this.favorite = false;
}
选项 => 2
ngOnInit() {
this.name = 'Test Stock Company';
this.code = 'TSC';
this.price = 85;
this.previousPrice = 80;
this.positiveChange = this.price >= this.previousPrice;
this.favorite = false;
}
或者两者混合会产生怎样的影响?
您应该始终使用 ngOnInit
,因为它属于 Angular 组件生命周期。在 ngOnInit
中,您可以访问 @Input
个变量。您可以通过 fixture.detectChanges()
.
ngOnInit
另一方面,构造函数与 Angular 无关,它是 TypeScript/JavaScript 语言的一部分。 Ctors 应该像许多其他语言一样只用于注入服务。