angular - 何时使用@ViewChild、@Input 和@Output?
问题描述
何时使用 ViewChild、输入和输出?既然可以使用 ViewChild 实现类的所有属性,那么为什么要使用 Input 和 Output。
在简单的场景中,输入和输出是最好的。但是我有 4 到 5 级的组件深度层次结构。在这种情况下,我应该使用 ViewChild 还是使用 Input 将数据传输到最后一个组件并使用 Output 将事件返回到顶部组件?
它们三者如何影响应用程序的性能?
解决方案
@ViewChild:
我们可以viewchild
用来访问原生元素属性。例如:如果我想在渲染我们的组件时实现点击事件,那么我必须使用@ViewChild
.
@ViewCild('refDiv'): refDiv = ElementRef;
ngOnInit() {
this.refDiv.nativeElement.click();
}
divClick() {
console.log('div is clicked!!!');
}
HTML
<div #refDiv (click)="divClick()">
</div>
@Input
如果我们有两个组件并且都具有父子关系,并且我们希望在这种情况下将数据从父级传递给子级,我们可以使用@Input
.
@Output
如果我们有两个组件并且都具有父子关系,并且我们想将数据从子节点传递给父节点,那么在这种情况下我们可以使用@Output
.
推荐阅读
- c - Azure Sphere 不向物联网中心 IOTHUB_CLIENT_CONNECTION_NO_NETWORK 发送遥测数据
- javascript - 如何打开带有 URL 的选项卡?
- python - 高斯白噪声的 RMS 幅度
- python - 如何从一组结果中列出一个列表?
- symfony - Flash 消息未显示但存在于 Flash Profiler 中
- reactjs - 调度 API 动作和加载阶段
- reactjs - 将元素转换为字符串
- gmail-api - 使用 Gmail API 发送的电子邮件被 Gmail 标记为钓鱼邮件
- python - 我怎样才能得到每个社区的直径
- mongodb - 日期之间的 MongoDB 聚合 $match