当前位置: 首页 > 知识库问答 >
问题:

检测输入的变化,以在角度2中执行另一个功能

丁英韶
2023-03-14

我有两个组件(父组件和一个子组件),我正在向子组件发送一个名为project的自定义对象,它会正确地更新/显示,但是当发生这种更改时,我想在子组件中执行另一个函数。是否可以检测项目对象何时更新,然后在子组件中运行该函数?

到目前为止,我已经通过以下代码取得了一些成就,但我不确定这是否是正确的方法。

ngDoCheck() {
    if (this.oldVal !== this.project.startTime) { 
        this.theFunctionThatIWantToRun();
        this.oldVal = this.project.startTime;;
    }
}

编辑:我忘记提到输入是一个具有数组和不同属性类型的复杂对象。在代码示例中,我只比较了对象的一个属性。

共有1个答案

唐珂
2023-03-14

在您的子组件中:

实现OnChanges接口,并像这样将函数ngOnChanges

@Input() prop: number;

ngOnChanges(changes: SimpleChanges) {
    // changes.prop contains the old and the new value
}

参考:https://angular.io/api/core/OnChanges

 类似资料:
  • 我有一个角度组件,它有一个输入< code>Person 在这个组件的父组件中,如果我替换了作为子组件输入的对象,

  • 问题内容: 我有一个使用ajax请求检索对象数组的父组件。 该组件有两个子组件:一个子组件以树结构显示对象,另一个子组件以表格格式呈现其内容。父级通过@input属性将数组传递给其子级,它们会正确显示内容。一切都如预期。 当您更改对象内的某些字段时,会发生问题:子组件不会收到有关这些更改的通知。仅当您手动将数组重新分配给它的变量时,才会触发更改。 我已经习惯了使用Knockout JS,并且需要获

  • 我有一个父组件(CategoryComponent)、一个子组件(videoListComponent)和一个APIService。 我的大部分工作都很好,即每个组件都可以访问json api,并通过Observables获取其相关数据。 当前video list组件只获取所有视频,我想将其筛选为特定类别中的视频,我通过将categoryId传递给子对象实现了这一点。 CategoryCompon

  • 我正在编写一个具有属性的角度组件。 我希望能够以编程方式设置此属性,而不是响应任何事件。 问题是在没有浏览器事件的情况下,模板绑定不会更新。 是否有办法手动触发此更改检测?

  • 我有一个父组件,它使用ajax请求检索对象数组。 该组件有两个子组件:一个以树结构显示对象,另一个以表格格式呈现其内容。父元素通过@input属性将数组传递给它们的子元素,子元素可以正确地显示内容。一切如预期。 当您更改对象中的某些字段时,就会出现问题:子组件不会收到这些更改的通知。只有当您手动将数组重新分配给其变量时,才会触发更改。 我已经习惯了使用Knockout JS,我需要获得类似于obs

  • 我需要检测绑定角度中的值变化,并在值更改时执行函数 当更改时,我需要执行一些代码组件类。