Javascript 角度:从其他组件调用函数

Javascript 角度:从其他组件调用函数,javascript,angular,typescript,Javascript,Angular,Typescript,我试着做两个角度分量,我想从第二个分量的第一个分量调用一个函数。尝试此操作时,我收到以下错误消息:无法将未定义的红色属性“functionName”设置为红色。如何解决这个问题 这里有一个示例链接:在多个组件之间共享信息的最佳方式通常是通过服务 创建一个单独的文件:file.service.ts 在app.module.ts文件中提供服务 将服务注入到每个组件中。然后您可以访问这两个组件中的变量 请参见:这是因为您要调用其函数的组件未实例化 对于组件通信,您可以改用服务: 服务 @注射的 导出类

我试着做两个角度分量,我想从第二个分量的第一个分量调用一个函数。尝试此操作时,我收到以下错误消息:无法将未定义的红色属性“functionName”设置为红色。如何解决这个问题


这里有一个示例链接:

在多个组件之间共享信息的最佳方式通常是通过服务

创建一个单独的文件:file.service.ts

在app.module.ts文件中提供服务

将服务注入到每个组件中。然后您可以访问这两个组件中的变量


请参见:

这是因为您要调用其函数的组件未实例化

对于组件通信,您可以改用服务:

服务 @注射的 导出类MyService{ myCustomFunction{ } } 组成部分 在您的组件中:


错误的原因是没有导入hello组件,但是您应该使用中间的服务,而不是从另一个组件调用组件,正如其他答案所建议的那样。

正如其他人所说,我更喜欢这些组件中带有主题的共享服务

服务:

WorldComponent订阅服务器:

export class WorldComponent  {
  constructor(private sharedService: SharedService){
    this.sharedService.mySubject.subscribe((data)=>{
      this.worldFunction();
    })
  }
HelloComponentpublisher:

public helloFunction() {
    alert('Hello');
    this.sharedService.mySubject.next(true);
  }

您可以在此处找到更新的示例:

要快速入门,请查看我的更新答案。
export class WorldComponent  {
  constructor(private sharedService: SharedService){
    this.sharedService.mySubject.subscribe((data)=>{
      this.worldFunction();
    })
  }
public helloFunction() {
    alert('Hello');
    this.sharedService.mySubject.next(true);
  }