1

我正在尝试为私有组件提出一个简单的用例,并在这里。假设我有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 {
}

但是,我也使用了未导出<private>的组件。HelloWorldAppModule那么会发生什么?<private></private>解析标签时,角度会引发错误,我对吗?

编辑:

另外,如果只在里面使用会发生什么UsesHelloWorldComponent

@Component({
    selector: 'uses-hello-world',
    template: `<hello-world></hello-world>`
})
class UsesHelloWorldComponent {
}

请注意,它<private>在其模板中使用。

感谢任何评论,因为网络上没有太多私有组件的示例。

4

1 回答 1

2

<private></private>应该会导致关于丢失的错误CUSTOM_ELEMENTS_SCHEMA。如果您证明CUSTOM_ELEMENTS_SCHEMA能够使用不是 Angular 组件的自定义标签,那么您将不会收到错误,除非您还添加了诸如<private [prop]="value">- 这将导致错误,因为当它<private>不是propPrivateComponent

于 2017-01-12T16:57:57.137 回答