我需要 Angular2 中的构造函数体吗?

Dan*_*ski 5 typescript angular

我找不到以下区别:

constructor (private router: Router) { }
Run Code Online (Sandbox Code Playgroud)

router: Router;    

constructor (private _router: Router) {
       this.router = _router
}
Run Code Online (Sandbox Code Playgroud)

变量router在整个类中可用,并且包含相同的数据。那么第一种和第二种语法有什么区别呢?

Mik*_*kki 2

基本上是这样的:

constructor (private router: Router) { }
Run Code Online (Sandbox Code Playgroud)

是这个的缩写形式:

private router: Router;    

constructor (_router: Router) {
    this.router = _router
}  
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我在所有项目中都使用第一种格式,因为它使文件更短,并且更易于阅读。

如果您对构造函数内部的块有疑问,答案是 - 不。如果您使用像我之前展示的简短形式,则无需在构造函数中添加任何内容。您可以将所有需要的初始化内容放入ngOnInit函数中。

简短的例子:

@Component({
  selector: 'my-cmp',
  template: `<p>my-component</p>`
})
class MyComponent implements OnInit {
constructor(
    private router: Router,
    private myService: MyService
) { }

  ngOnInit() {
    console.log('ngOnInit');
  }
}
Run Code Online (Sandbox Code Playgroud)