2016-11-29 79 views
1

我最近重新編寫了我的體系結構,併爲每個組件創建了模塊,因此我可以在路由時延遲加載它們。這很好。但是,我現在只是將組件導入其他組件,並不完全確定原因。我導入這樣的:Angular 2不能再將組件導入其他組件模塊

import {TrackingComponent} from './tracking/tracking.component'; 

,我的選擇很簡單:

<tracking></tracking> 

當我運行此我得到:

error_handler.js:46 EXCEPTION:未捕獲的(以諾) :錯誤:模板解析錯誤: '跟蹤'不是已知元素:

任何想法我做錯了什麼?目前,模塊/組件的區別有點渾渾噩噩。謝謝。

+0

您可以更新您TrackingComponent? – eugene

回答

3

您不需要將組件類導入其他類。這完全沒有(在Angular的上下文中),但讓你在另一個文件中使用該類。

你需要做的是@NgModule.imports的任何模塊組件是,到部件的其他模塊中,你要使用其他組件

@Component({ 
    selector: 'other' 
}) 
class OtherComponent {} 

@NgModule({ 
    declarations: [ OtherComponent ], 
    exports: [ OtherComponent ] 
}) 
class OtherModule {} 

@Component({ 
    selector: 'consumer', 
    template: '<other></other>' 
}) 
class ConsumerComponent {} 

@NgModule({ 
    imports: [ OtherModule ], 
    declarations: [ CosumerComponent ], 
    exports: [ ConsumerComponent ] 
}) 
class ConsumerModule {} 
+0

謝謝,這似乎工作。這很奇怪,因爲我已經將我的導航組件導入到另一個沒有模塊的組件中,並且效果很好,而不是訴諸於使用模塊。 –

+0

如果組件在同一個模塊中聲明,那麼它就可以工作。這是它是如何。如果組件在不同的模塊中聲明,那麼需要將該模塊導入到目標組件所在的模塊中。 –

相關問題