Tengo un método que quiero ejecutar cada vez que cambia una determinada propiedad en mi componente. El valor proviene de una entrada de otro componente.
Cada vez que myValue cambia, me gustaría llamar al método myMethod .
@Component({ selector: 'my-component', templateUrl: './my-component.html', styleUrls: ['./my-component.component.scss'], }) export class MyComponent { @Input() myValue: any; myValue: any; constructor() {} private myMethod() { // Called when this.myValue changes } }Puede lograrlo usando el enlace del ciclo de vida ngOnChanges o usando un setter combinado con @Input
Aquí está la solución con ngOnChanges
import { OnChanges, SimpleChanges } from '@angular/core'; @Component({ selector: 'my-component', templateUrl: './my-component.html', styleUrls: ['./my-component.component.scss'], }) export class MyComponent implements OnChanges { @Input() myValue: any; constructor() {} ngOnChanges(changes: SimpleChanges) { if(changes && changes.myValue) { this.myMethod(); } } private myMethod() { // Called when this.myValue changes } }Y aquí con el colocador.
@Component({ selector: 'my-component', templateUrl: './my-component.html', styleUrls: ['./my-component.component.scss'], }) export class MyComponent { private _myValue: any; @Input() set myValue(value: any) { this._myValue = any; this.myMethod(); } get myValue(): any { return this._myValue; } constructor() {} private myMethod() { // Called when this.myValue changes } }