شاید برای شما هم پیش آمده باشد که در یک برنامهی Angular بخواهید layoutهای مختلفی داشته باشید؛ مثلا هنگام لاگین، طبق عرف کار باید هدر و فوتر صفحه از بین بروند و فقط فرم لاگین نمایش داده شود و یا بخواهید هنگام لاگین، یک layout مخصوص پنل مدیریتی داشته باشید و یا …
قبل از شروع، فرض را بر آن میگیریم که حداقل نیازهای یک پروژهی Angular را آماده کرده اید. سپس یک پوشهی جدید را به نام layout میسازیم و layoutهای مربوطه را در آن ایجاد میکنیم. با دستور زیر یک کامپوننت جدید را که layout ما خواهد شد، با نام دلخواهی ایجاد میکنیم:
و همچنین یک کامپوننت دیگر را برای صفحهی اصلی به نام homelayout میسازیم:
در ادامه Loginlayout را باز کرده و تنظیمات زیر را لحاظ کنید:
<div style="width: 100%;height: 250px;background-color: aquamarine">
<h1>Header</h1>
</div>
<router-outlet></router-outlet>
<div style="width: 100%;height: 250px;background-color: brown">
<h1>Foother</h1>
</div>
در اینجا یک هدر و یک فوتر را ساخته و <router-outlet></router-outlet> را در آن قرار میدهیم که قسمت پویای ما خواهد شد.
اکنون وارد کامپوننت home layout شوید و دقیقا مانند قبل، تنظیمات دلخواه خود را انجام داده و همچنین <router-outlet></router-outlet> راهم درون جائیکه میخواهید به صورت پویا باشد بگذارید.
تا اینجا ما فقط layoutها را طراحی کردیم. در ادامه در ریشهی پروژه، سه کامپوننت را به نامهای Home , Login, About میسازیم. Home و About دارای یک قالب و Login هم داری قالب مخصوص به خود میباشد.
سپس وارد کامپوننت آغازین برنامه (app.component.html) شوید و در آن <router-outlet></router-outlet> را وارد کنید. در اینجا دیگر نیازی به نوشتن تگهای خاص دیگری نیست.
در ادامه به اصلیترین قسمت، یعنی مسیریابی میرسیم. وارد app.module.ts شوید و آن را به صورت زیر تنظیم کنید:
export const routes: Routes = [
{
path: 'Loginlayout',
component: LoginlayoutComponent ,
children: [
{ path: 'Login', component: LoginComponent, pathMatch: 'full'}
]
},
{
path: 'Homelayout',
component: HomelayoutComponent,
children: [
{ path: 'About', component: AbouComponent, pathMatch: 'full'},
{ path: 'Home', component: HomeComponent, pathMatch: 'full'}
]
}
];
همانطورکه ملاحظه میکنید، مسیریابی بالا شامل مسیریابیهای تو در تویی است. در اینجا کامپوننتهای Home و About درون HomelayoutComponent بارگذاری میشوند و خود HomelayoutComponent نیز درون app.component.
همچنین برای اینکه مشخص شود کدام کامپوننت به عنوان کامپوننت پیشفرض نمایش داده شود، به صورت زیر عمل میکنیم:
path: '',
component: HomelayoutComponent,
children: [
{ path: '', component:HomeComponent, pathMatch: 'full'}
]
به این روش میتوانید هر تعداد layout ایی را که میخواهید، ایجاد کنید.
کدهای کامل این مطلب را میتوانید از اینجا دریافت و یا به صورت آنی آزمایش کنید.