【问题标题】:Call method of one component in another component?在另一个组件中调用一个组件的方法?
【发布时间】:2017-09-13 18:03:25
【问题描述】:

我有两个不是子父组件的组件。我的问题是我可以这样做:

在组件 2 中这样做:

constructor(private comp1:ComponentOne){
}

save(){
this.comp1.methodComponentOne();
}

【问题讨论】:

  • 组件也是一个class,你可以创建它的instance

标签: angular


【解决方案1】:

您可能会破解某些东西以使某些东西工作......但它不是组件的使用方式。

组件的目的是提供一个特定视图/UI 所需的数据(属性)和方法(功能)。因此,一个组件中不应该有代码需要被另一个组件调用。

相反,构建一个服务。服务的目的是提供任何组件都可以访问的代码。

我这里有一个例子:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

此示例展示了如何共享数据,但您也可以在此处共享方法。

【讨论】:

    【解决方案2】:

    您需要一个service,它可以通过它们的constructor 在两个组件中“注入”。然后两个组件都可以与它们自身的服务方法进行交互。

    【讨论】:

      【解决方案3】:

      这就是services in Angular 的目的。 RXJS 也可以帮助在服务之间建立一些事件中心。

      【讨论】:

        【解决方案4】:

        可能被不同组件使用的方法应该属于一个服务,然后可以将它们导入并注入到构造函数中,然后根据需要调用方法。

        import { CustomService } from '../services/custom.service';
        .
        .
         constructor(
        private customService:CustomService,
        ) { }
        .
        .    
        this.customService.someMethod();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-19
          • 2019-02-03
          • 2018-09-06
          • 2020-04-05
          • 2017-12-09
          • 1970-01-01
          • 2017-05-19
          相关资源
          最近更新 更多