2017-04-06 143 views
0

正如我們所知,構造函數首先執行..但是當我嘗試在構造函數中訂閱服務時,在ngOnInit之後執行..但是我想在執行ngOnInt之前訂閱服務。你能幫我麼?在構造函數中訂閱服務在angular2中執行ngOnInit之後執行

這是我的示例代碼

constructor(private otherRoleService: OtherRoleService) { 
     this.data = [{ 
        "roleid" : "0" 
        }]; 
this.otherRoleService.getOtherRoles(this.data).subscribe(res => console.log('constructor'), err => this.fail(err));} 

ngOnInit(){ 
console.log('OnInit') 
} 
+0

您需要了解異步。你在ngOnInit之前訂閱。但是您稍後會收到來自您的訂閱的第一個異步事件。就像,如果你訂閱電子報,然後吃烤麪包,你會在你收到電子報的第一封郵件之前(也許在一兩天後)吃掉你的烤麪包片。 –

+1

@JBNizet這不取決於烤麪包的大小?我的意思是,如果你用全尺寸麪包做的麪包,它可能需要一段時間吃它 – PierreDuc

+1

有一個關於事件循環的好視頻,這將幫助你瞭解JavaScript的工作原理和爲什麼你的數據訂閱在onInit之後:https://www.youtube.com/watch?v = 8aGhZQkoFbQ – Yevgen

回答

0

你訂閱的事件,而你在正確的時間做這件事,唯一的事情是,該事件在一段時間之後被解僱。

如果您使用的角度路由器,你可以檢查resolve功能,這將確保您觀察到的會得到解決之前加載組件