angular 组件之间使用服务进行通信是否正确?
Is it correct to use services to communicate between angular components?
使用服务在angular个组件之间进行通信是否正确?
如果我有一个打开模式的组件
this.taskService.activeTask = this.currentTask;
this.tagSelectModalRef = this.modalService.show(TagSelectorComponent, {});
"pass" 模式必须通过服务使用的元素是否正确?
如果组件并排可视化,其中一个组件的点击会影响另一个组件,它是否也正确?
谢谢,
安瑞科
是的,您可以使用服务在组件之间进行通信。在 component interaction section.
的官方 angular 文档中有明确记录
我个人通过创建 2 个单独的组件来完成您过去尝试做的事情。我发现这是一个更简洁的实现,假设您在该服务中所做的一切都是共享数据。但从技术上讲,如果您确实想走那条路,使用服务并没有错。如果您正在对独立于模态和组件的数据进行操作,并且希望 运行 它们独立于组件或模态,我会更倾向于使用服务。
使用 2 个组件的概念解释如下:
所以你将拥有你已经拥有的组件,但将模态转换为你的第二个组件。
任何需要在两个组件之间共享的内容都可以使用 @Input
、@ViewChild
和 @Output
来完成。基本上,您需要从顶级组件传递下来的任何内容都可以在模态组件中使用 @Input
。您需要从模态通知顶级组件的任何内容,具体取决于您尝试向上传递树的内容或您希望触发的行为,您可以使用 @Output
和 EventEmitter
来自模态组件中的 @angular/core
导入,或者您可以在顶级组件中使用 @ViewChild
。
您需要使用服务在同级组件之间进行通信。如果您需要将 parent 与 children 或 children 与 parent 进行通信,请使用 @input 和 @output
使用服务在angular个组件之间进行通信是否正确?
如果我有一个打开模式的组件
this.taskService.activeTask = this.currentTask;
this.tagSelectModalRef = this.modalService.show(TagSelectorComponent, {});
"pass" 模式必须通过服务使用的元素是否正确?
如果组件并排可视化,其中一个组件的点击会影响另一个组件,它是否也正确?
谢谢,
安瑞科
是的,您可以使用服务在组件之间进行通信。在 component interaction section.
的官方 angular 文档中有明确记录我个人通过创建 2 个单独的组件来完成您过去尝试做的事情。我发现这是一个更简洁的实现,假设您在该服务中所做的一切都是共享数据。但从技术上讲,如果您确实想走那条路,使用服务并没有错。如果您正在对独立于模态和组件的数据进行操作,并且希望 运行 它们独立于组件或模态,我会更倾向于使用服务。
使用 2 个组件的概念解释如下:
所以你将拥有你已经拥有的组件,但将模态转换为你的第二个组件。
任何需要在两个组件之间共享的内容都可以使用 @Input
、@ViewChild
和 @Output
来完成。基本上,您需要从顶级组件传递下来的任何内容都可以在模态组件中使用 @Input
。您需要从模态通知顶级组件的任何内容,具体取决于您尝试向上传递树的内容或您希望触发的行为,您可以使用 @Output
和 EventEmitter
来自模态组件中的 @angular/core
导入,或者您可以在顶级组件中使用 @ViewChild
。
您需要使用服务在同级组件之间进行通信。如果您需要将 parent 与 children 或 children 与 parent 进行通信,请使用 @input 和 @output