【问题标题】:separate layout navigation in angular 2 asp.net coreangular 2 asp.net核心中的单独布局导航
【发布时间】:2017-01-08 05:41:11
【问题描述】:

我有一个包含页眉正文和页脚的主要布局。在某些页面中,我不想只显示正文和页脚。

我已经尝试过this answer,但我无法弄清楚如何去做。

这是我的代码:

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 { }

当我导航到主页/索引时,页脚容器不会出现。我究竟做错了什么?我必须为子路由导入一些东西吗?

【问题讨论】:

    标签: angular angular-routing


    【解决方案1】:

    'footer' 是 'Home/Index' 的子级,

    所以你需要:

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

    在 HomeComponent 模板中

    您尝试做的示例:

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

    祝你好运! :)

    【讨论】:

    • 我收到子路由错误,一切正常。请你告诉我如何解决这个问题
    • 你的 标签开头的“index.html”中有 吗?
    • 是的,我有.......这是孩子们的问题''。我必须为孩子路线导入一些东西吗??
    • 错误在RouterModule.forRoot(appRoutes);这一行。但是,如果我使用 RouterModule.forChild(appRoutes) 错误就会消失。但我看不到页脚
    【解决方案2】:

    这是工作模块

    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 { }
    

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 1970-01-01
      • 2017-04-09
      • 2012-09-26
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2017-05-24
      • 2017-07-22
      相关资源
      最近更新 更多