Как добавить спиннер перед загрузкой новой страницы в угловом формате? - PullRequest
0 голосов
/ 28 октября 2018

Итак, я хочу добавить спиннер, как в проекте ngx-admin http://akveo.com/ngx-admin/

Я добавил спиннер в мой index.html, появляется спиннер, но потом только моя навигационная панель обрабатывается испиннер продолжает вращаться там, где должен отображаться модуль.Навбар вызывается только в самом модуле, а не в модуле маршрутизации, поэтому я так растерялся, что он не работает.

<body>
<app-root>Loading...</app-root>

  <style>
      @-webkit-keyframes spin {
        0% {
          transform: rotate(0)
        }

        100% {
          transform: rotate(360deg)
        }
      }

      @-moz-keyframes spin {
        0% {
          -moz-transform: rotate(0)
        }

        100% {
          -moz-transform: rotate(360deg)
        }
      }

      @keyframes spin {
        0% {
          transform: rotate(0)
        }

        100% {
          transform: rotate(360deg)
        }
      }

      .spinner {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 1003;
        background: #000000;
        overflow: hidden
      }

      .spinner div:first-child {
        display: block;
        position: relative;
        left: 50%;
        top: 50%;
        width: 150px;
        height: 150px;
        margin: -75px 0 0 -75px;
        border-radius: 50%;
        box-shadow: 0 3px 3px 0 rgb(25, 136, 2);
        transform: translate3d(0, 0, 0);
        animation: spin 2s linear infinite
      }

      .spinner div:first-child:after,
      .spinner div:first-child:before {
        content: '';
        position: absolute;
        border-radius: 50%
      }

      .spinner div:first-child:before {
        top: 5px;
        left: 5px;
        right: 5px;
        bottom: 5px;
        box-shadow: 0 3px 3px 0 rgb(85, 255, 6);
        -webkit-animation: spin 3s linear infinite;
        animation: spin 3s linear infinite
      }

      .spinner div:first-child:after {
        top: 15px;
        left: 15px;
        right: 15px;
        bottom: 15px;
        box-shadow: 0 3px 3px 0 rgb(15, 109, 2);
        animation: spin 1.5s linear infinite
      }

    </style>
    <div id="nb-global-spinner" class="spinner">
      <div class="blob blob-0"></div>
      <div class="blob blob-1"></div>
      <div class="blob blob-2"></div>
      <div class="blob blob-3"></div>
      <div class="blob blob-4"></div>
      <div class="blob blob-5"></div>
    </div>
</body>

</html>

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Лучший способ - подписаться на события Маршрутизатора и соответственно настроить счетчик.

Для получения дополнительной информации см. Рисунок.

enter image description here

enter image description here

Вы можете отобразить счетчик, когда this.loading = true, просто используя * ngIf в файле app.component.html.

0 голосов
/ 28 октября 2018

Вы должны поместить спиннер внутрь элемента app-root.Он будет заменен приложением Angular после завершения загрузки приложения:

<body>
  <app-root>
    <!-- The spinner content goes here -->
  </app-root>
</body>

Чтобы отобразить счетчик во время загрузки определенного вида, вы можете заключить его в компонент счетчика:

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

@Component({
  selector: 'spinner',
  template: `
    <style>
      ...
    </style>
    <div id="nb-global-spinner" class="spinner">
      ...
    </div>  
  `,
})
export class SpinnerComponent { }

и добавить его в соответствующий модуль:

...
import { HomeComponent } from './home.component';
import { SpinnerComponent } from './spinner.component';

@NgModule({
  declarations: [ 
    ...
    HomeComponent,
    SpinnerComponent
  ],
  ...
})
export class MyModule { }

Вшаблон страницы назначения (например, home.component.html), вы можете использовать директиву ngIf ... else, чтобы отобразить компонент счетчика, пока страница все еще загружается:

<div *ngIf="isDataReady; else spinner">
  <!-- Normal page template here -->
</div>
<ng-template #spinner>
  <spinner></spinner>
</ng-template>

См. этот стек бликов для демонстрации.Спиннер воспроизводится во время загрузки данных домашней страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...