angular - Angular:仅允许通过模板访问组件成员
问题描述
这一直困扰着我很长时间,我找不到令人满意的答案。
假设我们有以下组件:
@Component({
selector: 'app-foo',
templateUrl: './foo.component.html',
styleUrls: ['./foo.component.scss']
})
export class FooComponent {
constructor() {
}
respondToEventFromTemplate() {
// do something...
}
}
因为模板不是组件的成员,respondToEventFromTemplate必须公开,代码才能通过 AOT。
但是,假设我们有以下内容:
@Component({
selector: 'app-bar',
template: '<app-foo #foo></app-foo>',
styleUrls: ['./bar.component.scss']
})
export class FooComponent implements AfterViewInit{
@ViewChild('foo') fooComponent: FooComponent;
constructor() {
}
ngAfterViewInit() {
this.fooComponent.respondToEventFromTemplate();
}
}
此代码完全有效,但会破坏封装。响应组件Foo模板中的事件的方法不应被组件Bar访问,因此应设为private。
所以我的问题是:有什么解决方案或解决方法可以让我使组件成员只能在其模板中访问而在其他任何地方都无法访问?
解决方案
推荐阅读
- javascript - Vuetify 有没有办法禁用/启用 v-text-field 附加图标
- internet-explorer - IE 不兼容横幅
- docker - 如何手动联网 docker 容器
- java - 如何关闭 org.apache.http.client.HttpClient 对象的连接
- javascript - json.parse() 位置 141 处 JSON 中的 Vanilla JS 意外令牌 A
- android - 尝试从 android 的内部存储中读取 excel 文件 (.xlsx) 时出现 FileNotFound 异常
- c++ - 在调用 std::condition_variable::wait() 之前多次调用 std::condition_variable::notify_one()
- java - 使用 Glide 将图像添加到工具栏
- sql - 将多个 self JOIN 转换为窗口函数或子查询 (SQL)
- python - 使用 Python 的 LazyLoader 导入类导入顶级模块