У меня есть основной макет с заголовком и нижним колонтитулом. На некоторых страницах я не хочу отображать только верхний колонтитул, тело и нижний колонтитул.
Я прошел этот ответ, который я пытался реализовать, но Я не мог понять, как это сделать.
Вот мой код:
app.component.ts
import { Component } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
@Component({
selector: 'main-app',
template: `<router-outlet name="header"></router-outlet>
<router-outlet name="navbar"></router-outlet>
<router-outlet></router-outlet>
<router-outlet name="footer"></router-outlet>`
})
export class AppComponent { }
< Сильный > Footer.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'Footer-app',
templateUrl: '<p>Copy rights emakitri 2017</p>'
})
export class FooterComponent {
constructor() {
console.log("test");
}
}
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { RouterModule, Routes } from '@angular/router';
import { HttpModule, JsonpModule } from '@angular/http';
import { ModuleWithProviders } from '@angular/core';
import { AppComponent} from "./app.component";
import { EqualValidator } from "./Validation/equal.validator.directive";
import { LoginComponent } from "./Components/login.Component";
import { HomeComponent } from "./Components/home.component";
import { DashBoardComponent } from "./Components/dashBoard.Component";
import { FooterComponent } from "./Components/footer.Component";
const appRoutes: Routes = [
{ path: '', redirectTo: 'Home/Index', pathMatch: 'full' },
{ path: 'Account/Login', component: LoginComponent },
{ path: 'Home/Index', component: HomeComponent,children: [
{path: '', component: FooterComponent , outlet: 'footer'}
] },
{ path: 'DashBoard/Index', component: DashBoardComponent}
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
@NgModule({
imports: [BrowserModule, FormsModule, HttpModule, routing],
declarations: [AppComponent, LoginComponent, HomeComponent, DashBoardComponent, EqualValidator,FooterComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
Когда я перехожу к Home / Index, контейнер нижнего колонтитула не появляется. Что я делаю неправильно? Нужно ли мне что-то импортировать для дочерней маршрутизации?
2 ответа
"нижний колонтитул" является дочерним элементом "Home / Index",
Так что вам нужно:
<router-outlet name="footer"></router-outlet>
Быть в шаблоне HomeComponent
Пример того, что вы пытаетесь сделать:
https://plnkr.co/edit/sgGDpti43GPM5cHntPpu?p=preview
Удачи ! :)
Вот рабочий модуль
App.Module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { Routes,RouterModule} from '@angular/router';
import { HttpModule, JsonpModule } from '@angular/http';
import { ModuleWithProviders } from '@angular/core';
import { AppComponent} from "./app.component";
import { EqualValidator } from "./Validation/equal.validator.directive";
import { LoginComponent } from "./Components/login.Component";
import { HomeComponent } from "./Components/home.component";
import { DashBoardComponent } from "./Components/dashBoard.Component";
import { FooterComponent } from "./Components/footer.Component";
import { NavComponent } from "./Components/nav.Component";
const appRoutes: Routes = [
{ path: '', redirectTo: 'Home/Index', pathMatch: 'full' },
{ path: 'DashBoard/Index', component: DashBoardComponent},
{ path: 'Account/Login', children: [
{path: '', component: NavComponent, outlet: 'navbar'},
{path: '', component: LoginComponent},
{path: '', component: FooterComponent, outlet: 'footer'}
]},
{ path: 'Home/Index', children: [
{path: '', component: NavComponent, outlet: 'navbar'},
{path: '', component: HomeComponent},
{path: '', component: FooterComponent, outlet: 'footer'}
]}
];
export const routing = RouterModule.forRoot(appRoutes);
@NgModule({
imports: [BrowserModule, FormsModule, HttpModule,routing],
declarations: [AppComponent, LoginComponent, HomeComponent, DashBoardComponent, EqualValidator,FooterComponent,NavComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
< Сильный > App.Component.ts
import { Component } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
@Component({
selector: 'main-app',
template: `<router-outlet name="navbar"></router-outlet>
<div class="container">
<router-outlet></router-outlet>
</div>
<router-outlet name="footer"></router-outlet>`
})
export class AppComponent { }
Похожие вопросы
Связанные вопросы
Новые вопросы
angular
Вопросы об Angular (не путать с AngularJS), веб-фреймворке от Google. Используйте этот тег для вопросов Angular, которые не относятся к отдельной версии. Для более старой веб-инфраструктуры AngularJS (1.x) используйте тег AngularJS.