2016-08-23 60 views
3

我找不到之间的差异:我需要Angular2中的构造函数体吗?

constructor (private router: Router) { } 

router: Router;  

constructor (private _router: Router) { 
     this.router = _router 
} 

变量router是全班可用,它包含相同的数据。那么第一个和第二个语法有什么区别?

+2

1日刚刚方法简写语法,你不需要编写样板代码,第二届一个是它只是更长的版本。 –

+3

不,默认情况下它是公开的。第二个实际定义了两个引用同一个对象的字段。一个是'router',是公开的,另一个'_router'是私人的。只需使用第一个片段即可。在官方文档中一切都很好地解释。你为什么不读它? https://www.typescriptlang.org/docs/handbook/classes.html –

+0

@JBNizet什么时候忍者班RC5的书更新? – Ced

回答

1

基本上这样的:

constructor (private router: Router) { } 

就是这短短的形式:

private router: Router;  

constructor (_router: Router) { 
    this.router = _router 
} 

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

如果你有关块内部的构造函数的问题,答案是 - 没有。如果您使用的是我之前展示的简短形式,则无需在构造函数中添加任何内容。所有需要的init东西你可以放在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'); 
    } 
} 
相关问题