У меня есть основной макет с заголовком и нижним колонтитулом. На некоторых страницах я не хочу отображать только верхний колонтитул, тело и нижний колонтитул.

Я прошел этот ответ, который я пытался реализовать, но Я не мог понять, как это сделать.

Вот мой код:

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, контейнер нижнего колонтитула не появляется. Что я делаю неправильно? Нужно ли мне что-то импортировать для дочерней маршрутизации?

0
San Jaisy 8 Янв 2017 в 08:41

2 ответа

"нижний колонтитул" является дочерним элементом "Home / Index",

Так что вам нужно:

<router-outlet name="footer"></router-outlet>

Быть в шаблоне HomeComponent

Пример того, что вы пытаетесь сделать:

https://plnkr.co/edit/sgGDpti43GPM5cHntPpu?p=preview

Удачи ! :)

0
YairTawil 8 Янв 2017 в 10:38
Я получаю сообщение об ошибке с дочерним маршрутом, все работает нормально. Подскажите, пожалуйста, как я могу решить эту проблему?
 – 
San Jaisy
8 Янв 2017 в 14:39
Есть ли у вас в вашем "index.html" в начале тега ?
 – 
YairTawil
8 Янв 2017 в 14:47
Да, у меня ... проблема с детьми ''. Мне нужно что-то импортировать для дочернего маршрута ??
 – 
San Jaisy
9 Янв 2017 в 03:37
Ошибка находится в этой строке RouterModule.forRoot (appRoutes) ;. Однако, если я использую RouterModule.forChild (appRoutes), ошибка исчезнет. Но я не вижу нижнего колонтитула
 – 
San Jaisy
9 Янв 2017 в 05:09
Вот полный код stackoverflow.com/questions/41518475/…
 – 
San Jaisy
9 Янв 2017 в 05:22

Вот рабочий модуль

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 { }
0
San Jaisy 9 Янв 2017 в 08:05