Tengo un componente y lo renderizo en ciclo (ngFor) El componente tiene un objeto
@Input() a = { name: 'Bob' } Después del cambio, restablecerá sus parámetros de entrada al estado inicial Cuando el componente haya cambiado, quiero obtener los valores que estaban en su inicialización ESCENARIO: -> @Input() a = {name: 'Bob'} (valor inicial) -> luego haz algo... this.a.name = 'Alice' ; -> en el bucle, el objeto cambia -> Una vez más, el componente importa @Input() a = {name: 'Bob'} (valor inicial) Quiero obtener el valor anterior después de que se haya actualizado el componente, es decir, ' Alicia'
De la documentación angular :
ngOnChanges(changes: SimpleChanges) { if(changes.a) { let chng = changes.a; let cur = JSON.stringify(chng.currentValue); let prev = JSON.stringify(chng.previousValue); } } Por lo tanto, necesitará la propiedad .currentValue y .previousValue para acceder a los valores actuales y anteriores.
Editar: 1
Si el componente se destruye, debe usar algún tipo de administración de estado: servicio con asunto, almacenamiento de sesión, almacenamiento local o algo más
Editar: 2
Puede extender la directiva ngFor y agregar la lógica de estado dentro de ngOnChanges.
@Directive({ selector: '[ngFor][ngForIn]' }) export class NgForIn extends NgFor implements OnChanges { @Input() ngForIn: any; constructor(viewContainer: ViewContainerRef, template: TemplateRef<NgForRow>, differs: IterableDiffers, cdr: ChangeDetectorRef) { super(viewContainer, template, differs, cdr); } ngOnChanges(changes: SimpleChanges): void { // Do something here } }