<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Bermeo</title>
    <description>The latest articles on DEV Community by John Bermeo (@jbermeo).</description>
    <link>https://dev.to/jbermeo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1390820%2F7b9674d8-ee8e-4d59-b490-68038c98c143.jpg</url>
      <title>DEV Community: John Bermeo</title>
      <link>https://dev.to/jbermeo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jbermeo"/>
    <language>en</language>
    <item>
      <title>Entendiendo un poco forRoot() y forChild() en Angular</title>
      <dc:creator>John Bermeo</dc:creator>
      <pubDate>Thu, 28 Mar 2024 16:31:02 +0000</pubDate>
      <link>https://dev.to/jbermeo/entendiendo-un-poco-forroot-y-forchild-en-angular-4o6p</link>
      <guid>https://dev.to/jbermeo/entendiendo-un-poco-forroot-y-forchild-en-angular-4o6p</guid>
      <description>&lt;p&gt;Angular es un framework de desarrollo de aplicaciones web desarrollado y mantenido por Google. Una de las características más poderosas de Angular es su sistema de enrutamiento, que permite a los desarrolladores crear aplicaciones de una sola página (SPA) de manera eficiente y organizada. Dos métodos clave dentro del enrutador de Angular son &lt;code&gt;forRoot()&lt;/code&gt; y &lt;code&gt;forChild()&lt;/code&gt;, los cuales juegan un papel fundamental en la configuración de rutas dentro de una aplicación Angular.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducción a forRoot() y forChild()
&lt;/h3&gt;

&lt;p&gt;Cuando se trabaja con enrutadores en Angular, es común encontrarse con la necesidad de modularizar la aplicación. Esto implica dividir la aplicación en módulos más pequeños y reutilizables. Sin embargo, al configurar el enrutamiento para estos módulos, surge la pregunta: ¿dónde se debe configurar el enrutamiento principal de la aplicación y dónde se deben agregar las rutas secundarias de los módulos internos?&lt;/p&gt;

&lt;p&gt;Aquí es donde entran en juego los métodos &lt;code&gt;forRoot()&lt;/code&gt; y &lt;code&gt;forChild()&lt;/code&gt;. Ambos métodos son utilizados para configurar las rutas en un módulo Angular, pero tienen propósitos diferentes y se utilizan en contextos diferentes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Utilizando forRoot() en el módulo raíz
&lt;/h3&gt;

&lt;p&gt;El método &lt;code&gt;forRoot()&lt;/code&gt; se utiliza típicamente en el módulo raíz de la aplicación, es decir, en el módulo que se carga inicialmente cuando se inicia la aplicación. Este método se utiliza para configurar las rutas principales de la aplicación.&lt;/p&gt;

&lt;p&gt;Cuando se llama a &lt;code&gt;forRoot()&lt;/code&gt;, se configuran las rutas principales de la aplicación y se proporciona el enrutador raíz de Angular. Este método solo se debe llamar una vez en la aplicación, generalmente en el módulo de enrutamiento principal (&lt;code&gt;AppRoutingModule&lt;/code&gt;), y proporciona el enrutador raíz para toda la aplicación.&lt;/p&gt;

&lt;p&gt;Supongamos que tenemos una aplicación Angular con un módulo principal (AppModule) y varios módulos secundarios. Aquí está cómo podríamos configurar los módulos:&lt;/p&gt;

&lt;h4&gt;
  
  
  AppModule:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app-routing.module.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/router&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="c1"&gt;// Rutas principales de la aplicación&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forRoot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
  &lt;span class="na"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppRoutingModule&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Utilizando forChild() en módulos secundarios
&lt;/h3&gt;

&lt;p&gt;Por otro lado, el método &lt;code&gt;forChild()&lt;/code&gt; se utiliza en los módulos secundarios de la aplicación, es decir, en aquellos módulos que se cargan de manera diferida o en módulos que se incluyen en el módulo raíz. Este método se utiliza para configurar las rutas específicas de esos módulos.&lt;/p&gt;

&lt;p&gt;Cuando se llama a &lt;code&gt;forChild()&lt;/code&gt;, se agregan las rutas específicas del módulo secundario al árbol de rutas existente. Es importante destacar que &lt;code&gt;forChild()&lt;/code&gt; debe llamarse en cada módulo secundario que contenga su propio enrutamiento.&lt;/p&gt;

&lt;h4&gt;
  
  
  Módulo secundario (Ejemplo: AdminModule):
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// admin-routing.module.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/router&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adminRoutes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="c1"&gt;// Rutas específicas para el módulo de administración&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;adminRoutes&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
  &lt;span class="na"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AdminRoutingModule&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusiones
&lt;/h3&gt;

&lt;p&gt;En resumen, los métodos &lt;code&gt;forRoot()&lt;/code&gt; y &lt;code&gt;forChild()&lt;/code&gt; son fundamentales para la configuración del enrutamiento en Angular. &lt;code&gt;forRoot()&lt;/code&gt; se utiliza en el módulo raíz para configurar las rutas principales de la aplicación y proporcionar el enrutador raíz, mientras que &lt;code&gt;forChild()&lt;/code&gt; se utiliza en los módulos secundarios para agregar rutas específicas a esos módulos. Al comprender cómo y cuándo utilizar estos métodos, los desarrolladores pueden estructurar sus aplicaciones de manera más eficiente y mantener un enrutamiento claro y organizado en sus proyectos Angular.&lt;/p&gt;

&lt;p&gt;Con el uso adecuado de &lt;code&gt;forRoot()&lt;/code&gt; y &lt;code&gt;forChild()&lt;/code&gt;, los desarrolladores pueden aprovechar al máximo el potencial del enrutador de Angular y crear aplicaciones web robustas y escalables.&lt;/p&gt;

&lt;p&gt;Recuerda que estos métodos son fundamentales para mantener un enrutamiento organizado y eficiente en tu aplicación Angular. ¡Espero que este artículo te haya ayudado a comprender mejor su funcionamiento! 🚀&lt;/p&gt;

</description>
      <category>angular</category>
    </item>
  </channel>
</rss>
