2017-04-24 14 views
5

Mam wspólne elementy nagłówka i komponenty stopki. lista krajów ładuje się na stronie głównej. po kliknięciu na kraj. strona zostanie przeładowana i wyświetli tekst Loading..., a następnie wyświetlanie nagłówka i stopki. ale chcę wyświetlić domyślny nagłówek i stopkę bez czekania na załadowanie pełnej strony. Mój kod tutaj.Jak wyświetlić wspólny nagłówek i stopkę domyślnie w kancie 2?

app-routing.module.ts

const routes: Routes = [ 
     { path: '', redirectTo: '/home', pathMatch: 'full' }, 
     { path: 'home', component: HomepageComponent,}, 
     { path: ':city', component: CountryDetailComponent }, 
     { path: ':city/:subscategory', component: ExploreListComponent }, 
     { path: ':city/:subscategory/:singleitem', component: DetailedPageComponent }, 
    ]; 

app.component.ts

import { Component } from '@angular/core'; 

    @Component({ 
     moduleId: module.id, 
     selector: 'my-app', 
     template: ` 
     <app-header></app-header> 
     <router-outlet></router-outlet> 
     <app-footer></app-footer> 
     `, 
    }) 
    export class AppComponent { } 

header.component.ts

import { Component,Renderer } from '@angular/core'; 
    import { Title } from '@angular/platform-browser'; 

    @Component({ 
     moduleId: module.id, 
     selector: 'app-header', 
     template: `header html script`, 
    }) 

    export class HeaderComponent { 
    constructor(title: Title) { } 
    } 

footer.component.ts

import { Component } from '@angular/core';  

    @Component({ 
     moduleId: module.id, 
     selector: 'app-footer', 
     template: `comman footer html script`, 

    }) 
    export class FooterComponent { 

    } 

index.html

<!doctype html> 
    <html> 
     <head> 
      <meta charset="utf-8"> 
      <title></title> 
      <base href="/"> 
      <meta name="viewport" content="width=device-width, initial-scale=1"> 
      <link rel="icon" type="image/x-icon" href="favicon.ico"> 
      <link href="assets/css/bootstrap.min.css" rel="stylesheet"> 
     </head> 
     <body> 
      <my-app>Loading...</my-app>  
     </body> 
    </html> 

homepage.component.ts

@Component({ 
    selector: 'my-app', 
    templateUrl: 'homepage.component.html', 
    styleUrls: ['homepage.component.css'], 
    providers: [ CountriesService] 
    }) 

    export class HomepageComponent { 
    ngOnInit() {    
       }   
    } 
+0

To powinno być zachowanie domyślne. Spróbuj rozwiązać ten problem, jeśli użyjesz 'import: [RouterModule.forRoot (myRoutes, {useHash: true})] –

+0

@ GünterZöchbauer, nie działa. – vel

+0

Trudno powiedzieć, ponieważ powinno to po prostu działać. Czy możesz rozmnażać się w Plunker? –

Odpowiedz

5

Wykonałem podstawowe demo mając na uwadze Twoje wymagania:

Wspólny nagłówek i stopka, możesz wprowadzać zmiany i dodawać do niego interfejsy API zgodnie z potrzebami.

<app-header></app-header> 
<router-outlet></router-outlet> 
<app-footer></app-footer> 

Sprawdź tę Plunker: https://plnkr.co/edit/aMLa3p00sLWka0pn5UNT

+1

Dziękuję. działa dobrze. – vel

+0

Jak przekazać parametry z komponentów "poniżej" mojego składnika głównego do stopki i nagłówka? – Azimuth

+0

@Azimuth Czy mógłbyś wyjaśnić, co dokładnie chcesz robić? –

0

W takim przypadku wymień swój kod z tego:

Index.html:

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
     <base href="/"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link rel="icon" type="image/x-icon" href="favicon.ico"> 
     <link href="assets/css/bootstrap.min.css" rel="stylesheet"> 
    </head> 
    <body> 
     <app-header></app-header> 
     <my-app>Loading...</my-app> 
     <app-footer></app-footer> 
    </body> 
</html> 

app.component.ts

import { Component } from '@angular/core'; 

    @Component({ 
     moduleId: module.id, 
     selector: 'my-app', 
     template: ` 
     <router-outlet></router-outlet> 
     `, 
    }) 
    export class AppComponent { } 
+0

nadal działa tak samo. nagłówek i stopka są wyświetlane dwukrotnie. – vel

+0

Czy chcesz opublikować artykuł na stronie głównejComponent –

+0

za pomocą selektora: "my-app" dla obu składników? –

3

można użyć dwa razy w terminalu:

ng generate component header 
ng generate component footer 

Następnie w pliku HTML głównym aplikacji (tj app.component.html) należy uwzględnić 2 znaczniki:

<app-header></app-header> 
<app-footer></app-footer> 

to jest pierwsza rzecz do zrobienia.

Następnie trzeba zapełnić szablony:

  • header.component.html i stylizacji w header.component.css
  • footer.component.html i stylizacji w * footer.component.css +