首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular13:组件间共享函数

Angular13:组件间共享函数
EN

Stack Overflow用户
提问于 2022-04-27 13:18:52
回答 2查看 531关注 0票数 1

我有两个不同的组件中的两个函数,我想在它们之间共享函数,但是我不知道如何在我的项目中使用它。在组件中,我有一个getDatasFromMainTable().在另一个,我有一个getDatasFromArchiveTable().我试过:

代码语言:javascript
复制
@Input() myFirstComponent!: MyfirstComponent;

在一个功能上:

代码语言:javascript
复制
this.myFirstComponent.getDatasFromArchiveTable();

但我有个口信

代码语言:javascript
复制
Cannot read properties of undefined (reading 'getDatasFromArchiveTable')

我读了很多关于behaviorSubject,或@ lot (),@ViewChild()或onChanges的东西.但如果我需要它的话,我不知道该如何为我的项目鼓掌。

EN

回答 2

Stack Overflow用户

发布于 2022-04-27 13:28:45

这就是服务的目的。

组件应该是“愚蠢的”,因为它们没有任何商业上的意义:它们把责任交给了服务。这就是依赖注入的意义所在。

因此,要共享这些方法,创建包含这些方法的服务,让组件调用服务上的这些方法。

票数 4
EN

Stack Overflow用户

发布于 2022-04-27 14:56:52

您有很多方法可以在组件上共享数据。

通过输入共享数据,通过ViewChild

  • Sharing共享数据,通过输出()共享数据,通过服务共享EventEmitter

  • Sharing数据,通过服务

共享数据,在组件上共享相同的逻辑(方法)

在你的例子中,解决方案将是5。如果你想要共享的方法(一些逻辑,并使用它在整个应用程序中)

简单服务示例:

代码语言:javascript
复制
import { Injectable } from '@angular/core';

@Injectable()
export class ExampleOfService{


  constructor() { }

  exampleOfFunction() {
   doSomething();
  }

}

之后,您可以在每个组件中调用您的方法。你可以添加参数等等..。

代码语言:javascript
复制
  import { Component, OnInit  } from '@angular/core';
    
  @Component({
   selector: 'app-example-component',
   template:  ['./app-example-component.html'],
   styleUrls: ['./example.component.scss']
    })

export class ExampleComponent implements OnInit{
   constructor(private exampleOfService: ExampleOfService) { }

ngOnInit(){
     //you can subscribe or whatever you need.
     this.exampleOfService.exampleOfFucntion();
     }

  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72029503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档