【问题标题】:Angular TS Lint onInit vs ngOnInitAngular TS Lint onInit 与 ngOnInit
【发布时间】:2018-07-09 22:41:42
【问题描述】:

我收到了来自 TS Lint 的警告,我需要实现 OnInit 接口,并为我提供了指向此页面的链接:https://angular.io/docs/ts/latest/guide/style-guide.html#!#09-01

onInitngOnInit 有什么区别。两者都为我工作。 为什么可以使用ngOnInit 而不是onInit,因为onInit 写起来很简单?

【问题讨论】:

  • OnInit是接口,实现它需要你定义方法ngOnInit。您链接到的文档中对此进行了说明。

标签: angular tslint


【解决方案1】:

Angular 总是检查生命周期钩子,无论你的类是否实现了接口。

https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html

所以如果你有这个类:

export class MyComponent {
    ngOnInit() { ... }
}

它会正常工作(框架会调用ngOnInit)。但是,最好实现接口以确保方法已正确实现。

export class MyComponent implements OnInit {
    ngOnInit() { ... }
}

请注意,onInit 不是生命周期钩子,不会被 Angular 调用——它只是接口的名称,表示您在类中的某个位置使用 implement ngOnInit 方法。

【讨论】:

  • “向其他开发者发出信号是件好事”——但这并不是它的真正用途;根据 OP 链接的文档,编译器可以警告您,例如写 ngOnInt 并花一天时间想知道为什么它永远不会被调用。
  • 我的意思是,我也可以。实现接口的另一个好处。
猜你喜欢
  • 2021-06-07
  • 2019-02-08
  • 1970-01-01
  • 2019-10-03
  • 2016-06-21
  • 2020-11-04
  • 2021-05-13
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多