Quinto paso y final: Angular
Integración Angular + ASP.NET API
Fecha: 6 de setiembre
Hora de inicio: 7:00 p.m.
Hora de finalización: 1:00 a.m. (7 de setiembre)
Código final
insertar.ts – Lógica de inserción con mensajes específicos
ts
insertar(): void {
this.empleadoService.insertar({ nombre: this.nombre, salario: this.salario }).subscribe(res => {
switch (res.codigo) {
case 1:
this.mensaje = 'Empleado insertado correctamente';
this.exito = true;
setTimeout(() => this.router.navigate(['/']), 1500);
break;
case -2:
this.mensaje = 'Error: El nombre ya está registrado';
this.exito = false;
break;
case -1:
this.mensaje = 'Error: El salario debe ser mayor a cero';
this.exito = false;
break;
default:
this.mensaje = 'Error desconocido';
this.exito = false;
}
this.nombre = '';
this.salario = 0;
});
}
Program.cs – Configuración de CORS para permitir Angular
csharp
builder.Services.AddCors(options =>
{
options.AddPolicy("DevPolicy", policy =>
{
policy.WithOrigins("http://localhost:4200")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors("DevPolicy");
app.MapControllers();
angular.json – Activación de Bootstrap
json
"styles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/styles.scss"
]
Errores y soluciones
| Error | Causa | Solución aplicada |
NG0201: No provider found for _HttpClient | Falta de HttpClientModule en AppModule | Se agregó provideHttpClient() en providers |
| CORS bloquea peticiones desde Angular | API no tenía habilitado CORS | Se configuró DevPolicy en Program.cs |
| Tabla sin formato | Bootstrap no estaba cargado | Se instaló Bootstrap y se agregó en angular.json |
| Todos los errores se interpretaban como “nombre duplicado” | Los case estaban invertidos en insertar.ts | Se corrigió el orden de los case para reflejar correctamente los códigos |
SqlException 10060 | Timeout por conexión fallida a Azure SQL | Se revisó IP pública, firewall y cadena de conexión |