¡Esta es una revisión vieja del documento!
Clase abstracta reutilizable en Angular para facilitar la creación de componentes que usen formularios, tablas, modales y alertas. Provee métodos y propiedades comunes que se pueden extender y personalizar según las necesidades del componente específico.
Esta clase permite centralizar funciones comunes como:
Estas dependencias se inyectan usando la función `inject()`.
Inicializa el formulario base con un campo `filter`.
```typescript this.form = this._fb.group({
filter: ['']
}); ```` Es útil para componentes que tengan filtros simples.
\
Configura el breadcrumb que se mostrará en la parte superior del componente, útil para indicar la ruta actual.
```typescript this._breadcrumbService.setItems(items); ```
—
\
Inicializa la tabla cargando columnas, configuración y datos. Solo funciona si los métodos `getTableColumns()`, `getTableConfig()` y `loadDataTable()` están implementados en la subclase.
—
\
Son métodos opcionales que deben ser sobreescritos por los componentes que extiendan `BaseComponent`.
```typescript protected getTableColumns(): TableListColumns[] {
return [...]; // retorna las columnas
} ```
—
\
Permite redirigir a otra ruta usando el `Router` de Angular.
```typescript this.navigateTo(['/ruta', id]); ```
—
\
Ejecuta una función asociada a una acción en la tabla. Se debe haber registrado antes usando `registerAction()`.
```typescript this.registerAction('editar', (item) ⇒ this.editarItem(item)); ```
—
\
Actualiza `page` y `size` con los valores del evento y recarga los datos.
—
\
Controla la selección de filas en la tabla. Si una fila es seleccionada, se agrega a `selectedItems`, de lo contrario, se elimina.
—
\
Asocia una acción de la tabla con una función manejadora. Esto permite ejecutar lógica personalizada cuando se dispara una acción desde la tabla.
—
\
Maneja el cierre de una alerta. Si el usuario confirma, se oculta el mensaje.
—
\
Configura los parámetros para mostrar una alerta con SweetAlert. Es reutilizable y puede personalizarse fácilmente.
```typescript this.initSweeetAlert('Guardado', 'Los datos han sido guardados', 'success'); ```
—
\
Inicializa la configuración de un modal que puede abrirse en el componente.
```typescript this.initModal('Editar usuario', '30rem', true, true); ```
\
```typescript export class MiComponente extends BaseComponent<Usuario> {
protected override getTableColumns(): TableListColumns[] { return [ { field: 'nombre', header: 'Nombre' }, { field: 'email', header: 'Correo' } ]; }
protected override getTableConfig(): ConfigTable { return { actions: true, selectable: true }; }
protected override loadDataTable(): void { // Aquí haces una llamada a un servicio para llenar dataSource }
ngOnInit() { this.setBreadcrumb([{ label: 'Usuarios' }]); this.initTable(); }
} ```
\
* Evita repetir lógica en múltiples componentes. * Mejora la mantenibilidad del código. * Estandariza el uso de formularios, tablas y modales. * Facilita pruebas y futuras refactorizaciones.
\
* \[\[ada\:howto\:sicoferp\:factory\:new-migracion-sicoferp\:front\:primeros|Primeros pasos]]
```
—