angular - 从一个组件运行/发射器事件到另一个组件
问题描述
我创建了两个组件:(nav
和app
)。
在导航中,我有一个函数getnumber()
,它在执行时从总值中减去 -1。
有没有办法通过点击但在应用程序组件中执行此功能?
我打算单击应用程序组件的按钮时,该功能将在nav
组件中执行并更新值。
由于总值为 5,当点击按钮时,函数被执行,值变为 4。
谁能帮我申请这个?
谢谢
导航
getnumber(){
this.total = this.total - 1;
}
导航.html
<p>
Nav
</p>
<p>
Total: {{total}}
</p>
解决方案
您可以通过模板引用在另一个组件上调用公共方法。
app.component.html
<app-nav #nav></app-nav>
<button (click)="nav.decrement()">
Execute decrement() nav component
</button>
导航组件.ts
total = 5;
decrement() {
this.total = this.total - 1;
}
在 HTML 示例中,#nav
正在创建nav
对NavComponent
实例的引用。同一个 HTML 文件中的任何其他元素现在都可以调用该实例上的公共函数。
演示:https ://stackblitz.com/edit/angular-bw5jtp
替代方法
#nav
您可以从您的 component.ts 中调用它,而不是直接在 HTML 中调用。用于@ViewChild
获取对组件实例的引用。
app.component.ts
@ViewChild('nav', { static: true }) nav: NavComponent;
onClick(): void {
this.nav.decrement();
}
推荐阅读
- database - Wordpress 数据库查询结果不显示
- javascript - 当用户离开网页时,React 中 Promise 的行为是什么?
- python - 如何在 Python Gremlin 中添加 g:Vertex GraphSON?
- r - 无法安装 ggm 包 un R 语言
- prometheus - promql 查询以从出现最大值的范围向量中返回值。次
- android - Android - RecyclerView 列表项和父项之间的间距相等
- python - 如何在字典中正确显示长字符串?
- r - 在多个键上使用 groupby 在 R 中的不同函数上聚合多个列:R 中的命名聚合
- java - Spring Boot JPA 如何处理子表更新
- android - Textview 内容在约束布局中从右侧截断