【发布时间】:2017-09-13 18:03:25
【问题描述】:
我有两个不是子父组件的组件。我的问题是我可以这样做:
在组件 2 中这样做:
constructor(private comp1:ComponentOne){
}
save(){
this.comp1.methodComponentOne();
}
【问题讨论】:
-
组件也是一个
class,你可以创建它的instance
标签: angular
我有两个不是子父组件的组件。我的问题是我可以这样做:
在组件 2 中这样做:
constructor(private comp1:ComponentOne){
}
save(){
this.comp1.methodComponentOne();
}
【问题讨论】:
class,你可以创建它的instance
标签: angular
您可能会破解某些东西以使某些东西工作......但它不是组件的使用方式。
组件的目的是提供一个特定视图/UI 所需的数据(属性)和方法(功能)。因此,一个组件中不应该有代码需要被另一个组件调用。
相反,构建一个服务。服务的目的是提供任何组件都可以访问的代码。
我这里有一个例子:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/
此示例展示了如何共享数据,但您也可以在此处共享方法。
【讨论】:
您需要一个service,它可以通过它们的constructor 在两个组件中“注入”。然后两个组件都可以与它们自身的服务方法进行交互。
【讨论】:
这就是services in Angular 的目的。 RXJS 也可以帮助在服务之间建立一些事件中心。
【讨论】:
可能被不同组件使用的方法应该属于一个服务,然后可以将它们导入并注入到构造函数中,然后根据需要调用方法。
import { CustomService } from '../services/custom.service';
.
.
constructor(
private customService:CustomService,
) { }
.
.
this.customService.someMethod();
【讨论】: