Angular中另一个组件上的问题调用函数

时间:2019-11-22 00:02:52

标签: angular

在我解释我的问题之前,这里是设置的背景。

核心是AG网格和 ag-grid-angular 组件。我在其上构建 ag-grid-base 组件 它处理诸如过滤器分页等基本功能。然后,我有一个名为 filter-grid 的组件,该组件向网格中添加了一些动态设置,例如加载列列表等。 然后,我使用这个组件来设置不同网格的实例以显示数据。网格的一项功能是以模式形式查看和/或编辑数据。我实现了一个事件发射器,以使调用对话框的组件知道由于更改而需要何时重新加载数据。

数据重载功能是我的ag-grid-component的一部分,我可以从我的filter-grid组件中调用它,但是当我尝试从我的自定义网格中调用filter-grid上的函数时,我得到了一堆错误,例如

  

BucketGridComponent_Host.ngfactory.js? [sm]:1错误错误:   StaticInjectorError(AppModule)[BucketGridComponent->   FilterGridComponent]:StaticInjectorError(平台:   核心)[BucketGridComponent-> FilterGridComponent]:       NullInjectorError:没有FilterGridComponent的提供者!

不确定我缺少什么..

2 个答案:

答案 0 :(得分:0)

我认为这是重复的

也许您的BucketGridModule已在导入时添加到app.module.ts
因此,您需要将导入和导出(两者)FilterGridModule添加到BucketGridModule.component.ts 但是您的FilterGridComponent没有模块,您需要将该组件添加(declarations)到BucketGridModule中。如下。

BucketGridModule.component.ts

import { FilterGridComponent} from './{I don't know where it is}/FilterGridComponent';

@NgModule({
    imports: [
        ...
        FilterGridComponent
    ],
    export:  [
       ...
       FilterGridComponent
    ],
    declarations: [
        FilterGridComponent
    ],
})

app.component.ts

import { BucketGridModule} from './{I don't know where it is}/BucketGridModule';

@NgModule({
    imports: [
        ...
        BucketGridModule
    ],    
    declarations: [
        FilterGridComponent  //Now I'm not sure need or not.
    ],
})

答案 1 :(得分:-1)

经过一些解决之后,我想起来更简单。相反,在构造函数中声明filtergrid时,我只导入了

import { FilterGridComponent} from './{I don't know where it is}/FilterGridComponent';

,然后创建一个@ViewChild。

@ViewChild('filterGrid') filterGrid: FilterGridComponent;

之后,我可以毫无问题地调用relaod函数。

reloadData() {
    this.filterGrid.reload()
}