私有组件的用例

时间:2017-01-12 16:55:20

标签: angular angular2-modules

我正在尝试为私有组件提供一个简单的用例,就在这里。假设我的模块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>标签时,angular会抛出错误吗?

修改

此外,如果仅在UsesHelloWorldComponent内使用会发生什么:

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

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

感谢任何评论,因为网上私人组件的例子不多。

1 个答案:

答案 0 :(得分:2)

<private></private>会导致错误CUSTOM_ELEMENTS_SCHEMA错误。如果您证明CUSTOM_ELEMENTS_SCHEMA能够使用非Angular组件的自定义标记,那么您将不会收到错误,除非您还添加<private [prop]="value">之类的绑定 - 这将导致错误,因为当<private>不是prop

时,PrivateComponent没有 if ((!empty($formData['from_date1'])) && (!empty($formData['to_date2']))) { $where_params .= "AND DATE(regdate) BETWEEN $from_date1 AND $to_date2"; } else if ((!empty($formData['from_date1'])) && (empty($formData['to_date2']))) { $where_params .= "AND DATE(regdate) >= $from_date1"; } else if( (!empty($formData['to_date2'])) && (empty($formData['from_date1']))) { $where_params .= "AND DATE(regdate) <= $to_date2"; } 属性