He creado una aplicación angular que debe estar encima de una aplicación .NET. Hay una vista de índice de la aplicación ASP.Net desde la que debo llamar a cierta vista angular.
Para las pruebas, intenté alojar la aplicación localmente con http serve
, aquí solo puedo acceder al index.html (que en mi caso no tiene entradas), una ruta como /users
para ir a los leads de Descripción general del usuario a un 404.
Aquí está mi módulo de enrutamiento:
const routes: Routes = [
{path: 'users', component: UsersComponent},
{path: 'user/new', component: UserNewComponent},
{path: 'user/edit/:id', component: UserEditComponent}
];
@NgModule({
declarations: [],
imports: [
CommonModule,
RouterModule.forRoot(routes)
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Sé que debería ser una aplicación de una sola página, pero en este momento, para esa iteración, debería ser así. ¿Como puedo resolver esto?
3 respuestas
La solución fue agregar un web.config con reglas explícitas de reescritura para IIS, así como URL-Rewriter 2.
Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Necesitará un servidor que redirija todas las rutas a index.html
. http serve
no hará eso.
Internamente, Angular maneja las rutas mediante el uso de algo llamado rutas virtuales.
Por ejemplo:
En Node.js tenemos algo como,
app.get('*', function (req, res) {
res.sendFile(path.join(frontend_path, 'index.html'));
});
Para fines de desarrollo, puede ejecutar un servidor local utilizando,
ng serve
En el directorio angular de nivel superior
RouterModule.forRoot(routes, { useHash: true })
Pruebe useHash: true
en el archivo app.routing
. Esto funciona para mi.
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
html
HTML (HyperText Markup Language) es el lenguaje de marcado para crear páginas web y otra información que se mostrará en un navegador web. Las preguntas sobre HTML deben incluir un ejemplo mínimo reproducible y una idea de lo que está tratando de lograr. Esta etiqueta rara vez se usa sola y, a menudo, se combina con [CSS] y [javascript].