私有组件的用例
Use case for private components
我正在尝试为私有组件想出一个简单的用例,就在这里。假设我的模块 HelloWorldAppModule
带有一个 public 和一个私有组件:
@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
中注册。
然后,我创建了另一个导入 HelloWorldAppModule
的模块 UsesHelloWorldModule
,因此,据我所知,我可以在 HelloWorldAppModule
中注册的指令模板中使用它导出的组件。所以这里是:
@Component({
selector: 'uses-hello-world',
template: `<hello-world></hello-world><private></private>`
})
class UsesHelloWorldComponent {
}
@NgModule({
imports: [HelloWorldAppModule],
declarations: [UsesHelloWorldComponent],
})
class UsesHelloWorldModule {
}
但是,我还使用了未导出的 HelloWorldAppModule
中的 <private>
组件。那么会发生什么? angular 在解析 <private></private>
标签时会抛出错误,我说得对吗?
编辑:
另外,在UsesHelloWorldComponent
里面使用only会怎么样:
@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>
没有 prop
属性 而不是 PrivateComponent
我正在尝试为私有组件想出一个简单的用例,就在这里。假设我的模块 HelloWorldAppModule
带有一个 public 和一个私有组件:
@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
中注册。
然后,我创建了另一个导入 HelloWorldAppModule
的模块 UsesHelloWorldModule
,因此,据我所知,我可以在 HelloWorldAppModule
中注册的指令模板中使用它导出的组件。所以这里是:
@Component({
selector: 'uses-hello-world',
template: `<hello-world></hello-world><private></private>`
})
class UsesHelloWorldComponent {
}
@NgModule({
imports: [HelloWorldAppModule],
declarations: [UsesHelloWorldComponent],
})
class UsesHelloWorldModule {
}
但是,我还使用了未导出的 HelloWorldAppModule
中的 <private>
组件。那么会发生什么? angular 在解析 <private></private>
标签时会抛出错误,我说得对吗?
编辑:
另外,在UsesHelloWorldComponent
里面使用only会怎么样:
@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>
没有 prop
属性 而不是 PrivateComponent