2015-10-15 103 views
8

也許這是兩個問題之一。我知道你必須顯式地聲明要在Component for Angular 2中使用的指令。這是否會傳播給組件的子組件,如果不是,它可以做到嗎?其次,組件上聲明的變量是否傳播給子組件,還是必須顯式傳遞給組件?指令/範圍繼承

+1

他們計劃實施你提到的內容。 [見這個問題](https://github.com/angular/angular/issues/2844)。然而,它不斷推遲,所以你必須等待。 –

+0

我想這是一個難以解決的問題,因爲模塊化思想指出組件/模塊沒有隱式依賴關係。如果要將子組件移到其他地方,它將會中斷。這通常通過繼承或依賴注入來解決,這會在子組件和父組件之間建立強有力的聯繫,從而使您的子組件無法自行移動。 – jornare

+0

我認爲這與函數式編程有同樣的意義,然後......不幸的是,這意味着我有一些工作要做;) – djvs

回答

2

從beta.14開始,您必須明確列出@Componentdirectives陣列中所有使用的指令。對於問題的第二部分,在組件上聲明的變量(例如:this.name)不會傳播到子組件。要實現這一點,必須使用像<child [item]="parentItem"></child>這樣的屬性在組件模板中明確傳遞它們,並且子組件必須包含@Input item屬性。

編輯: 要合併的澄清評論...有可能在bootstrap功能,但全球只有註冊指令。父級聲明的指令將由子組件繼承NOT

bootstrap(App, [ 
    PLATFORM_DIRECTIVES, 
    provide(PLATFORM_DIRECTIVES, {useValue: [SomeDirective, SomeComponent], multi:true}) 
]); 
+0

您可以使用'provide(PLATFORM_DIRECTIVES,{useValue:[SomeDirective,SomeComponent], multi:true})',與管道相同'bootstrap(App,[提供(PLATFORM_PIPES,{useValue:RainbowizePipe,multi:true})]);' –

+0

謝謝澄清 – tomastrajan