Angular:如何从不同模块中的另一个组件调用组件方法

时间:2018-05-02 22:51:15

标签: angular

我正在尝试从B_Module拥有的B_Component调用A_Module拥有的A_Component方法,并且只要将A_Component作为参数添加到B_Component构造函数中,就会出现以下错误:

  

NullInjectorError:没有A_Component的提供者!

编辑:这两个组件不是父/子。他们的模块由app.module

导入

(为简洁起见,代码摘要)

A_Module:

import { A_Component } from '...'

@NgModule({
    imports: [...],
    declarations: [A_Component],
    exports: [A_Component],
})

export class A_Module { }

B_Module:

import { A_Module } from '...'
import { B_Component } from '...'

@NgModule({
    imports: [A_Module],
    declarations: [B_Component]
})

export class B_Module { }

A_Component:

export class A_Component {
    someMethod() {...}
}

B_Component:

import { A_Component } from '...'

export class B_Component {

    constructor(public a_Component: A_Component)) {} //this param causes error

    callSomeMethod() {
        this.a_Component.someMethod();
    }
}

这不是如何跨模块调用组件方法吗?唯一的方法是使用服务吗?

1 个答案:

答案 0 :(得分:1)

请参阅components interaction官方文档。

您只能使用ViewChild调用组件内声明的组件的方法。

如果你想让两个不同的组件相互交互 - 应该完成via common service

在@diopside

之后更新