angular - 两个组件Angular之间的相互关系?
问题描述
有两个具有以下结构的组件:
<app-root>
<app-book-list>
<app-pagination (onSelect)="setPageSize($event)">
<app-root>
从服务器加载书籍的方法放置在<app-book-list>
:
public getBooks(page: number): void {}
当用户从分页中选择页面时,它会调用 event (onSelect)="setPageSize($event)"
。
处理setPageSize()
程序在<app-root>
组件中。
public setPageSize(badge: Badge): void {
// Call here getBooks
}
如何调用getBooks()
里面的方法public setPageSize(badge: Badge) {}
?
当然,我可以将组件移动<app-pagination (onSelect)="setPageSize($event)">
到<app-book-list>
中,但我想在其他任何地方使用列表,所以我将分页与列表组件分开。
解决方案
有两种方法可以解决这个问题:
- 使用可观察对象构建一个服务,该服务将处理值和一些功能
- 使用@Input() 和@Output() 在父母和孩子之间进行交流
无论如何,您需要考虑您的用例。为了获得更大的可重用性,我会亲自使用专门的服务。
推荐阅读
- java - 如何在Android Java中连续制作2个按钮并在一列中制作2个按钮?
- python-3.x - 我的作业文档中的 NLP 示例崩溃了
- swift - 来自数组的 RxSwift 可观察对象序列
- azure - 使用 Azure IoT 设备预配服务在属性更改和事件订阅时触发事件
- python - soup.find(class_="") 不适用于加密站点
- r - R:当序列长度不等时计算马尔可夫转移矩阵
- python - 当我给它图像时,我的 keras 模型给了我随机预测
- r - ggplot2使用位置dodge2时具有分类和数值的堆叠条
- java - Java - 如何根据数组中的整数打印字符串 x 次
- svg - 使用 d3.js 进行 SVG 组翻译的问题