1

私は、プライベート コンポーネントの簡単な使用例を考え出そうとしています。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をエクスポートしますが、テンプレートの内部でHelloWorldComponentPrivateComponentが使用されます。両方のコンポーネントが に登録されているため、これは正常に機能するはず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 上にはプライベート コンポーネントの例があまりないため、コメントをいただければ幸いです。

4

1 に答える 1

2

<private></private>が見つからないというエラーが発生するはずCUSTOM_ELEMENTS_SCHEMAです。CUSTOM_ELEMENTS_SCHEMAAngular コンポーネントではないカスタム タグを使用できることが証明された場合、次のようなバインディングも追加しない限り、エラー<private [prop]="value">は発生し<private>ませpropん。PrivateComponent

于 2017-01-12T16:57:57.137 に答える