Tengo un componente principal que es una lista y un componente secundario que muestra detalles y le permite al usuario editar estos detalles. Estoy buscando una forma de preguntarle a mi componente secundario si todavía tiene cambios sin guardar antes de permitir que un usuario cambie la selección.

Configuración actual: padre (simplificado): dx-tree-list con (onRowClick) = "editStatus ($ event)"

    editStatus(event: any): void {
        this.getEditableStatus(event.data.id);
    }

    getEditableStatus(id: number): void {
        this._statusService.getEdit(id).subscribe(editableStatus => {
            this.selectedStatus = editableStatus;
        });
    }

<configuration-project-status-detail *ngIf="!!selectedStatus" [selectedStatus]="selectedStatus">
                </configuration-project-status-detail>

Niña:

    ngOnChanges(): void {
        if (!!this.selectedStatus) {
            this.selectedStatusCopy = _.cloneDeep(this.selectedStatus);
        }
    }

Estos cambios se realizan en la copia, por lo que la lista no se actualiza al mismo tiempo.

Entonces, necesito una forma de verificar los cambios en el componente secundario (que tiene una función hasChanges, pero se compara con selectedStatus), por lo que es posible que esto no se cambie antes de verificar, lo que significa que debe verificarse antes de 'getEditableStatus'. ¿Hay alguna otra forma de pasar un booleano al niño, que a su vez emite otro valor?

1
Lotte Lemmens 31 jul. 2020 a las 10:11

1 respuesta

La mejor respuesta

Lo encontré, mi idea original no es posible ... Esto es:

@ViewChild(ProjectStatusDetailComponent, { static: false }) childComponent: ProjectStatusDetailComponent;

if (!!this.childComponent) {
   console.log(this.childComponent.hasChanges());
}
1
Lotte Lemmens 31 jul. 2020 a las 08:08