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