parametros - En angular2, cómo obtener cambios en las propiedades cambiadas en un objeto enviado para una entrada @
page title angular 4 (1)
Angular solo notará si el objeto ha sido cambiado a un objeto diferente (es decir, la referencia del objeto ha cambiado), por lo que ngOnChanges()
no se puede usar para resolver su problema. Vea la publicación del blog de Victor Savkin para más información.
Puede implementar el método ngDoCheck()
en su clase MyDirective. Ese enlace de ciclo de vida se llama "cada vez que se verifican las propiedades de entrada de un componente o una directiva. Úselo para extender la detección de cambios mediante la realización de una comprobación personalizada".
Para implementar su método de verificación personalizado, primero debe implementar un método .equals()
en la clase SettingsClass
manera que luego pueda escribir código similar al siguiente en ngDoCheck()
:
ngDoCheck() {
if(!this.inputSettings.equals(this.previousInputSettings)) {
// inputSettings changed
// some logic here to react to the change
this.previousInputSettings = this.inputSettings;
}
}
Tengo una directiva y en ella hay una @Input
que acepta una clase.
@Directive({selector: ''my-directive''})
@View({directives: [CORE_DIRECTIVES]})
export class MyDirective {
@Input() inputSettings : SettingsClass;
@Input() count : number;
onChanges(map) {
console.log(''onChanges'');
}
}
La directiva se usa en html:
...
<my-directive [input-settings]="settings" [count]="settings.count"></my-directive>
...
Si el settings.count se cambia, el onChanges
se onChanges
. Si cualquier otra propiedad en la clase de configuración cambia, entonces no se disparará.
¿Cómo puedo detectar si hay un cambio en alguna propiedad en la configuración?