2016-11-29 57 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

如果组件在同一个模块中声明,那么它就可以工作。这是它是如何。如果组件在不同的模块中声明,那么需要将该模块导入到目标组件所在的模块中。 –

相关问题