私は、プライベート コンポーネントの簡単な使用例を考え出そうとしています。HelloWorldAppModule1 つのパブリック コンポーネントと 1 つのプライベート コンポーネントを含むモジュールがあるとします。
@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 {
}
ただし、エクスポートされていない<private>のコンポーネントも使用しました。HelloWorldAppModuleそれで、何が起こるでしょうか?<private></private>タグの解析時に angular がエラーをスローするというのは正しいですか?
編集:
また、 only を inside で使用するとどうなりますかUsesHelloWorldComponent:
@Component({
selector: 'uses-hello-world',
template: `<hello-world></hello-world>`
})
class UsesHelloWorldComponent {
}
テンプレート内で使用することに注意してください<private>。
Web 上にはプライベート コンポーネントの例があまりないため、コメントをいただければ幸いです。