![](/img/trans.png)
[英]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.