angular - 在 Angular 组件中声明变量。在 ngOnInit 或变量声明中?
问题描述
在 Angular 7 应用程序中,我有以下组件:
export class ListComponent implements OnInit {
visible: boolean;
ngOnInit() {
this.visible = false;
}
toggle() {
this.visible = !this.visible
}
}
在我看来:
<table *ngIf="visible">
Table content
</table>
在 ngOnInit 或变量声明中设置 visible 的初始值有什么区别,例如:
visible: boolean = false;
哪种方法更好?
解决方案
当您已经知道要在变量中分配的数据时,最好在声明时对其进行初始化
@Component({...})
export class ChildComponent {
visible: boolean = false;
}
但是,如果您的变量依赖于另一个服务或函数,那么您需要在 ngOnInit 内而不是在构造函数上指定它
“大多数情况下,我们使用 ngOnInit 进行所有初始化/声明,并避免在构造函数中工作。构造函数应该只用于初始化类成员,而不应该做实际的“工作”。
“ngOnInit() 是“开始”的更好地方——它是解决组件绑定的地方/时间。”
- Pardeep Jain
@Component({...})
export class ChildComponent {
visible: boolean;
constructor(private sampleService: SampleService) {}
ngOnInit() {
this.visible = this.sampleService.isVisible; // May it a plain boolean or an Observable that you need to subscribe
}
}
推荐阅读
- android - 如何构建符合 Google Play 64 位要求的应用程序?
- ruby-on-rails - Rails 5:使用具有两个属性的 .where
- go - 使用 gRPC 响应服务的 Go 的 Google Cloud Endpoints 示例失败
- assembly - 汇编调用 printf - WSL 和独立 Ubuntu 18.04 64 位上的不同行为
- java - 无法通过 Android API 22 (Lollipop) 上的套接字发送 ICMP 数据包
- emacs - ccls 是否支持项目范围的调用层次结构?
- python - 实际显示小部件后如何更改 sizeHint?
- ios - 用分隔符转换数字格式,
- php - 为什么 +3 h 的另一个输出是 +3 小时?
- python - 如何替换图像数据的 NaN 值?