2016-03-02 40 views
0

Angular1在angular2處理像angular1

<div ng-app="myApp" ng-controller="AppCtrl"> 
     <ui-view> 

     <ui-view> 
</div> 

這裏不同意見的公共代碼將在ui-view被注入。
比方說home.html被注入所以homeCtrl將進入圖片。
我可以考慮AppCtrl是父母時,homeCtrl是孩子。
此外,當homeCtrl初始化時,AppCtrl也被稱爲父/子方案一次。
所以在整個應用程序,我可以把公共代碼AppCtrl

Angular2

Boot.ts < =====不應構造被稱爲每次? [這只是我的想法]
| _____ Home.ts
| _____ Aboutus.ts

Boot.ts

export class BootCmp{ 
    constructor(){ 
    console.log('Should this run everytime??') 
    } 
} 

這是把公共代碼最好的方法?
sharedService?
還有其他一些機制嗎?

+0

我想你忘了'構造函數(){執行console.log(...)}''中BootCmp'? 「讓我們說home.html被注入,所以homeCtrl」HTML不被注入。什麼是「home.html」和「homeCtrl」? –

+0

哎呀!是的,我忘了。 – micronyks

+0

當你的目標由''目標home.html',在angular1'parent'控制器homeCtrl'也被初始化或者叫我的意思。所以我正在尋找這樣的架構,每次調用「parent」。如果你的背景是'.net',你必須知道總是調用父窗體。 – micronyks

回答

0

您的應用程序的根部件「構造」一次 - 當您引導應用程序時調用constructor()。其餘組件根據您的應用邏輯創建和銷燬,例如使用路由器或ngIf

不知道你認爲「通用代碼」,但你可以考慮到這一點計劃...

0

我在你的問題閱讀什麼,你的意見是兩個問題:一個 是成分,它的通信,另一個是CommonCode-Initialsation。

  1. 組件通信:

如果你「忘記」 @input和@Output,它是可以使用的服務,爲家長和孩子之間的溝通。

見MissionControlExample在角2食譜,例如:

https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

如果您不想將使用共享服務,使用EventEmitter爲例。
見:父偵聽子事件(如MissionControlExample相同鏈路)

之一的角2的優點是HTLM5 WebComponent的概念的詢問服務,所以html的是作爲模板元件的組件的一部分。

  1. CommonCode初始化
    取決於CommonCode。如果它是特定於應用程序的,則將其初始化到您的AppComponent中,如果它是Component特定的,則在組件中進行初始化。 這取決於你的代碼。

要回答更具體的,請分享你的問題你的代碼。