首页 > 解决方案 > 在构造函数中使用 FormBuilder 是一种不好的做法吗?

问题描述

Angular doc here你可以看到下面的 implementation.ie 声明formBuilder和服务constructor()。我知道在里面使用服务constructor()是一种不好的做法。即我们需要使用ngOnInit()它。但我也constructor()用于声明formBuilder属性。这是不是太糟糕的做法?我也需要使用ngOnInit()它吗?页面创建会一直持续到formBuilder创建吗?

export class CartComponent {
  items;
  checkoutForm;

  constructor(
    private cartService: CartService,
    private formBuilder: FormBuilder,
  ) {
    this.items = this.cartService.getItems();

    this.checkoutForm = this.formBuilder.group({
      name: '',
      address: ''
    });
  }
}

标签: javascriptangulartypescriptionic4

解决方案


简短的回答,是的,您应该将大部分初始化逻辑留在ngOnInit生命周期挂钩中。

根据OnInit的角度文档,它用于

  • 在构造后不久执行复杂的初始化。
  • 在 Angular 设置输入属性之后设置组件。

ngOnInit因此,在生命周期钩子上执行诸如获取数据和初始化表单构建器之类的逻辑会更干净。

你应该看看 Misko Hevery 的这篇文章,他是 Angular 的团队负责人,他概述了许多保持构造函数清洁的原因。


推荐阅读