Aplicación Angular de profesores con componentes compartidos
Clase 12 de 17 • Curso de Monorepositorios con NX
Resumen
Aprende cómo la visión de profesores en Angular coordina dos aplicaciones con componentes compartidos, un backend común y arranque ágil con Nx Console y Nx Cloud. Aquí verás cómo un cambio en servicios, modelos o UI repercute en ambas apps al mismo tiempo, optimizando trabajo y evitando duplicación de código.
¿Cómo se organiza la aplicación de profesores en Angular y Nx?
La segunda app se encuentra en packages, app dos, y muestra un panel de profesores con navegación entre dos rutas: gestión de cursos e inscripciones por curso. Actúa como pivote con el Note JS Server, compartiendo recursos con la primera app.
- Rutas clave: gestión de cursos e inscripciones por curso.
- Componentes compartidos: tabla de inscripciones, tarjeta del curso y botón cuando corresponde.
- Carpeta UI compartida: UI shared centraliza tarjeta, tabla y estilos comunes.
- Lógica en TS: cada vista tiene su controlador, con modelos como curso y un Api Service ya usado en la app uno.
- Imports en Angular diecisiete: componentes se importan directamente en cada vista.
- Linting: el constructor puede mostrar errores que se corrigen luego.
¿Qué componentes se reutilizan entre apps?
- Tabla compartida: listados y, según el caso, acciones del CRUD.
- Tarjeta de curso: misma presentación en ambas apps.
- Botón: solo donde la lógica de negocio lo necesita.
¿Cómo ayuda el modelo y el Api Service?
- Modelo curso: tipa datos y uniforma el intercambio.
- Api Service: centraliza llamadas al backend, evitando duplicaciones.
¿Qué flujo cubre el CRUD de cursos y cómo validarlo?
La gestión de cursos usa un formulario reactivo: el botón de crear permanece deshabilitado si no se cumplen las condiciones. La tabla compartida ofrece el CRUD completo.
- Create: crear un curso desde el formulario.
- Read: visualizar cursos existentes en tabla y tarjetas.
- Update: editar desde acciones de la tabla.
- Delete: eliminar registros cuando sea necesario.
Importante: en la pantalla de profesores no hay botón de inscripción en las tarjetas, porque no corresponde a su lógica de negocio.
¿Cómo se ven las inscripciones por curso?
- Un select permite elegir el curso y ver sus inscripciones.
- Una tarjeta general y una tabla sin acciones muestran la información relevante.
¿Qué datos prácticos se mencionan?
- Validación: el botón crear se habilita solo si el formulario es válido.
- Flujo completo: crear, ver, editar y eliminar en una misma vista.
¿Cómo sincroniza todo con el mismo backend y qué herramientas aceleran?
Se arranca el server con Nx Console y se espera a que esté en localhost 3000. Luego se abren la app uno en 4200 y la app dos en 4201. La velocidad mejora gracias a la caché de Nx Cloud, que guarda resultados en memoria.
- Puertos: 3000 para backend, 4200 para app uno, 4201 para app dos.
- Rendimiento: Nx Cloud acelera el ciclo de desarrollo con caché.
- Pivote: ambas apps consultan el mismo backend, sincronizando cambios.
¿Qué demuestra el ejemplo de “Angular con Firebase”?
- Se crea un curso “Angular con Firebase” y aparece la nueva tarjeta.
- Desde la app uno, un usuario puede inscribirse.
- En la app dos, en inscripciones por curso, se ve “Alice Cooper” recién inscripta.
- Conclusión operativa: lo que ocurre en una pantalla impacta en la otra por compartir el mismo backend.
¿Qué pasa al modificar componentes compartidos?
- Se cambia el color de la etiqueta de profesores en el CSS de la tarjeta en UI shared (clase course teacher).
- El cambio se refleja de inmediato en ambas aplicaciones.
- Valor: una sola modificación afecta múltiples proyectos, ahorrando tiempo y código.
¿Qué decisiones de negocio son solo educativas?
- Selector de usuario actual expuesto para simplificar pruebas: en producción habría login.
- Modificaciones abiertas a cualquiera: en la vida real habría restricciones y permisos.
¿Te gustaría ver otras mejoras en componentes compartidos o flujos de validación? Cuéntalo en los comentarios y propón qué optimizar a continuación.