2016-12-26 7 views
6

W moich głównych tras Mam moduł profil leniwy załadowane na /profile tak:Pokaż animację ładowania podczas leniuchowania modułów?

{ 
     path: '', 
     component: HomeComponent 
    }, 
    { 
     path: 'profile', loadChildren: './profile/profile.module#ProfileModule' 
    }, 
    { 
     path: '**', 
     redirectTo: '', 
     pathMatch: 'full' 
    } 

Jednak mój profil moduł trwa około 1,5 - 2 sekund, aby załadować, który jest dość powolne. Chciałbym pokazać animację ładowania podczas mojego ładowania modułu, czy mimo to jest tak? Próbowałem w ten sposób:

app.component.html

<!-- other stuff ... --> 

<router-outlet></router-outlet> 
<div class="loading"> 
    <div class="spinner"> 
    <div class="rect1"></div> 
    <div class="rect2"></div> 
    <div class="rect3"></div> 
    <div class="rect4"></div> 
    <div class="rect5"></div> 
    </div> 
</div> 

i wewnątrz mojego css, miałem:

/* default .loading styles, .loading should be invisible, opacity: 0, z-index: -1 */ 
    .loading { 
     opacity: 0; 
     transition: opacity .8s ease-in-out; 
     position: fixed; 
     height: 100%; 
     width: 100%; 
     top: 0; 
     left: 0; 
     background: #1B1B1B; 
     color: white; 
     z-index: -1; 
    } 
    /* .loading screen is visible when app is not bootstraped yet, .my-app is empty */ 
    router-outlet:empty + .loading, 
    router-outlet:empty + .spinner { 
     opacity: 1; 
     z-index: 100; 
    } 

    /* spinner animation css stuff */ 

Ale to nie wydaje się działać, Czy mimo wyświetlić trochę programu ładującego, gdy załadowane są moduły kątowe2?

Odpowiedz

2

Gniazdo routera nie będzie umieszczać w nim żadnych przedmiotów, więc umieszcza je obok niego.

Kiedy jest pusty:

<router-outlet></router-outlet> 

Więc, kiedy jest załadowany, to byłoby:

<router-outlet></router-outlet> 
<your-code></your-code> // which is loaded afterward 

Więc router wylot: pusty nie powinien nic robić.

Można powiedzieć:

router-outlet + .loading .spinner { 
     opacity: 1; 
     z-index: 100; 
    } 
+0

docenić odpowiedź, jednak nie mogłem dostać jakikolwiek obciążenia roboczego za pomocą '.loader' i' .spinner' –

+0

@SyntacticFructose, zaktualizowałem moją odpowiedź, ale ogólnie , powinieneś najpierw upewnić się, że twoja animacja działa, a następnie spróbuj zintegrować ją z routerami – Milad