2016-07-14 55 views
0

我在我的應用程序中使用了常見組件,如我在其他組件中使用的標題,對話框等。他們的方式我現在就是在我需要的時候簡單地將它們用作HTML標籤。例如,如果我的標題組件的選擇器是'app-header',那麼每次我想包含標題時,我都使用<app-header></app-header>Angular2重新使用組件

我覺得這不是正確的做法,因爲Angular有一個叫做ViewChild的東西,它可以做同樣的事情。但是,當我嘗試使用ViewChild我得到同樣的錯誤這裏討論:https://github.com/angular/angular/issues/5415

回答

0

外貌,像你的問題是從5415的問題(你的鏈接)的問題完全不同..

如果你想在你的頁面上總是有一些組件,只是一些替代品 - 你需要使用路由器。

https://angular.io/docs/ts/latest/guide/router.html

+0

我覺得有一個誤解。想象一下,我有3個組件:HomeComponent,MapComponent,TileComponent。我希望HomeCompoent View在任何時候都包含MapComponent和TileComponent。我不認爲這是路由器的用途。 – Yhlas

+1

對不起,但我不明白從你的解釋問題。 如果你需要一個組件包含另一個組件,只需將它們添加到一個HomeComponent模板(和'指令'的裝飾器屬性),如下所示: '... <地圖組分> <標題組分> ... ' 比你會把你的<家庭成分>地方它會在所有子組件中渲染..這是基於組件的方法的基本原則。 '@ ViewChild'裝飾只有當你想獲得一個訪問子組件屬性 –

+0

感謝,奧列格只有必要。我就是這樣做的。我只是不確定這是否正確。 – Yhlas

0

我想你只需要添加的子組件選擇模板父組件。一旦這樣完成,只要使用父組件,子組件就會出現。我一直在我的角度2項目中這樣做,這是有效的。如果我對你的問題的理解是正確的,請告訴我。 乾杯, Abhi