[英]In Angular 2, what is the use of private components (components not exported)
[英]Use case for private components
我正在尝试为私有组件提出一个简单的用例,并在这里找到它。 假设我有一个带有一个公共和一个私有组件的模块HelloWorldAppModule
:
@Component({
selector: 'hello-world',
template: `
<div>
<private></private>
</div>`
})
class HelloWorldComponent {
}
@Component({
selector: 'private',
template: `<span>I am private</span>`
})
class PrivateComponent {
}
@NgModule({
declarations: [HelloWorldComponent, PrivateComponent],
exports: [HelloWorldComponent]
})
class HelloWorldAppModule {
}
如您所见,此模块仅导出HelloWorldComponent
,但是,在HelloWorldComponent
模板内部使用PrivateComponent
。 由于两个组件都在declarations
中注册,因此应该可以正常工作。
然后,我创建另一个模块UsesHelloWorldModule
,该模块导入HelloWorldAppModule
,因此,据我了解,我可以在HelloWorldAppModule
注册的指令模板中使用由其导出的组件。 所以这里是:
@Component({
selector: 'uses-hello-world',
template: `<hello-world></hello-world><private></private>`
})
class UsesHelloWorldComponent {
}
@NgModule({
imports: [HelloWorldAppModule],
declarations: [UsesHelloWorldComponent],
})
class UsesHelloWorldModule {
}
但是,我还使用了未导出的HelloWorldAppModule
中的<private>
组件。 那么会发生什么呢? 我是否正确,在解析<private></private>
标记时angular会抛出错误?
编辑:
另外,如果仅在UsesHelloWorldComponent
内部使用,将会发生什么:
@Component({
selector: 'uses-hello-world',
template: `<hello-world></hello-world>`
})
class UsesHelloWorldComponent {
}
请注意,它在模板内使用<private>
。
感谢任何评论,因为网络上没有太多私有组件的示例。
<private></private>
应该导致有关缺少CUSTOM_ELEMENTS_SCHEMA
的错误。 如果您证明CUSTOM_ELEMENTS_SCHEMA
能够使用不是Angular组件的自定义标签,那么您将不会得到错误,除非您还添加了<private [prop]="value">
类的绑定,这将导致错误,因为<private>
不是PrivateComponent
则不会具有prop
属性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.