2016-08-23 64 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'); 
    } 
} 
相關問題