Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular';s ngOnChanges_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 在Angular';s ngOnChanges

Javascript 在Angular';s ngOnChanges,javascript,angular,typescript,Javascript,Angular,Typescript,我知道这是一个相当基本的问题,但我似乎找不到解决这个问题的办法。这是: 我有一个角度分量,在这个分量中我有一个函数 export class RolesListComponent implements OnInit, OnChanges { @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent; ngOnChanges(changes: SimpleChanges): void { this

我知道这是一个相当基本的问题,但我似乎找不到解决这个问题的办法。这是:

我有一个角度分量,在这个分量中我有一个函数

export class RolesListComponent implements OnInit, OnChanges {

    @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent;

    ngOnChanges(changes: SimpleChanges): void {
        this.refresh();
    }

    refresh(){
        this.dataGrid.instance.refresh();
    }

}
在onchanges中调用this.refresh()无效,并会出现一个错误,即refresh未定义

我该怎么做才能直接在onchanges中执行函数内部的代码,或者执行函数本身。

根据文档

ngOnChanges在角度(重新)设置数据绑定输入属性时响应


简单地说,如果您有任何
@input
属性,并且如果您想检测这些属性的任何更改,您可以使用
ngOnChanges
。因为我在您的组件中没有看到任何输入属性,所以ngOnchanges无法执行

您确定吗?你不觉得更多的是关于你的
datagrid.instance.refresh
没有被定义吗?您可能知道(或不知道),
onChanges
钩子在
afterViewInit
之前触发,后者将viewchildren绑定到组件。组件是否包含构造函数和
ngOnInit()
方法?你能添加错误信息编辑你的问题吗?这应该可以。没有理由说明这个.refresh()不在使用ngOnChanges的类的作用域内。@Trichetrich这可能是个问题。你知道我如何修复我的datagrid对象没有定义的事实吗?@Vlad将
this.datagrid.instance.refresh()
替换为
this.datagrid&&this.datagrid.instance.refresh()
(这是一行中的
if
语句)我有一个@Input()我只是没有把它放在代码片段中。然后一旦输入值发生更改,angular将启动OnCharge方法是的,这不是问题所在。问题是,我收到一个错误,说refresh()未定义。它
this.dataGrid.instance.refresh()此刷新非常感谢您的回答。检查datagrid是否使用if语句启动,工作是否正常!