tnblog
首页
视频
资源
登录
不帅~~但是很暖心.....
排名
14
文章
75
粉丝
21
评论
43
申请别的接口数据(网络接口)
是伍尚金哇 : 敲一夜代码,流下两三行泪水,掏空四肢五体,六杯白开水七桶泡面
mui框架-移动端跳转以及传值的简单方法(修改解决方法)
是伍尚金哇 : 测试了 可以直接在 extras: { userid:'10' //自定义扩展...
数据库的varchar和nvarchar的区别
是伍尚金哇 : 没人看 自己看一个 温习一下
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

angular使用加载指示符loading的ngx-loading

7692人阅读 2020/12/23 18:18 总访问:372840 评论:0 收藏:0 手机
分类: Angular

前言

欢迎使用tnblog

如果你的项目是纯angular需要用到请求或者其他方式时在在界面上通过loading的方式来展示请求进度或其他;
这里我使用ngx-loading,源码:https://github.com/Zak-C/ngx-loading

终端运行命令:

  1. npm install --save ngx-loading


导入NgxLoadingModule模块:app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { NgxLoadingModule } from 'ngx-loading';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    NgxLoadingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }


TS后台代码:app.component.ts

import { ComponentOnInitTemplateRefViewChild } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ngxLoadingAnimationTypesNgxLoadingComponent } from 'ngx-loading';

const PrimaryWhite = '#ffffff';
const SecondaryGrey = '#ccc';
const PrimaryRed = '#dd0031';
const SecondaryBlue = '#006ddd';

@Component({
  selector: 'app-test-page2',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.less']
})
export class TestPage2Component implements OnInit {

  @ViewChild('ngxLoading', { static: false }) ngxLoadingComponentNgxLoadingComponent;
  @ViewChild('customLoadingTemplate', { static: false }) customLoadingTemplateTemplateRef<any>;
  public ngxLoadingAnimationTypes = ngxLoadingAnimationTypes;
  public loading = true;
  public primaryColour = PrimaryWhite;
  public secondaryColour = SecondaryGrey;
  public coloursEnabled = false;
  public loadingTemplateTemplateRef<any>;
  public config = { animationType: ngxLoadingAnimationTypes.noneprimaryColour: this.primaryColoursecondaryColour: this.secondaryColourtertiaryColour: this.primaryColourbackdropBorderRadius: '3px' };

  constructor(private sanitizerDomSanitizer) { }

  public toggleColours(): void {
    this.coloursEnabled = !this.coloursEnabled;

    if (this.coloursEnabled) {
      this.primaryColour = PrimaryRed;
      this.secondaryColour = SecondaryBlue;
    } else {
      this.primaryColour = PrimaryWhite;
      this.secondaryColour = SecondaryGrey;
    }
  }

  toggleTemplate(): void {
    if (this.loadingTemplate) {
      this.loadingTemplate = null;
    } else {
      this.loadingTemplate = this.customLoadingTemplate;
    }
  }

  public showAlert(): void {
    alert('ngx-loading rocks!');
  }

  ngOnInit(): void {
  }

}


html界面代码:app.component.html

<div id="header">
    <img width="100" src="https://angular.cn/assets/images/logos/angular/angular.svg" alt="angular icon">
    <h1>ngx-loading</h1>
  </div>
  
  <button id="toggle-loading-button" (click)="loading = !loading">Toggle loading</button>
  <button id="toggle-colours-button" (click)="toggleColours()">Toggle colours</button>
  <button id="toggle-template-button" (click)="toggleTemplate()">Toggle template</button>
  
  <ng-template #customLoadingTemplate>
    <div class="custom-class">
      <h3>
        Loading...
      </h3>
      <button (click)="showAlert()">
        Click me!
      </button>
    </div>
  </ng-template>
  
  <div class="loading-container">
    <div class="loading">
      <h2>threeBounce</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{primaryColourprimaryColoursecondaryColoursecondaryColourtertiaryColourprimaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>chasingDots</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.chasingDotsprimaryColourprimaryColoursecondaryColoursecondaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>doubleBounce</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.doubleBounceprimaryColourprimaryColoursecondaryColoursecondaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>circle</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.circleprimaryColourprimaryColoursecondaryColoursecondaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>circleSwish</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.circleSwishprimaryColourprimaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>cubeGrid</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.cubeGridprimaryColourprimaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>pulse</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.pulseprimaryColourprimaryColoursecondaryColoursecondaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>rectangleBounce</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.rectangleBounceprimaryColourprimaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>rotatingPlane</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.rotatingPlaneprimaryColourprimaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>wanderingCubes</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading [show]="loading" [config]="{animationTypengxLoadingAnimationTypes.wanderingCubesprimaryColourprimaryColoursecondaryColoursecondaryColourbackdropBorderRadius'3px'}"
        [template]="loadingTemplate"></ngx-loading>
    </div>
  
    <div class="loading">
      <h2>none</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua.</p>
      <ngx-loading #ngxLoading [show]="loading" [config]="config" [template]="loadingTemplate"></ngx-loading>
    </div>
  </div>
  


写点样式渲染:app.component.less

#header {
    displayflex;
    flex-directioncolumn;
    align-itemscenter;
  }
  
  h1 {
    margin-top0;
  }
  
  .loading-container {
    displayflex;
    flex-wrapwrap;
  }
  
  .loading {
    height189px;
    width189px;
    positionrelative;
    margin0 15px 15px 0;
    padding15px;
    border1px #ccc solid;
    border-radius4px;
  }
  
  .loading p {
    margin0 0 10px 0;
  }
  
  button {
    bordernone;
    border-radius4px;
    padding6px;
    colorwhite;
    outlinenone;
    font-weightbold;
    font-size1.1em;
    margin15px 15px 15px 0;
    font-family'Roboto'sans-serif;
    cursorpointer;
    background-color#666666;
  }
  
  button:hover {
    background-color#797979;
  }
  
  button#toggle-loading-button {
    background-color#dd0031;
  }
  
  button#toggle-loading-button:hover {
    background-color#ff0032;
  }
  
  button#toggle-colours-button {
    background-color#006ddd;
  }
  
  button#toggle-colours-button:hover {
    background-color#0c7aea;
  }
  
  button#toggle-template-button {
    background-colorblack;
  }
  
  button#toggle-template-button:hover {
    background-color#303030;
  }
  
  .custom-class {
    top0;
    z-index2002;
    positionabsolute;
    left0;
    right0;
    bottom0;
    displayflex;
    flex-directioncolumn;
    justify-contentcenter;
    align-itemscenter;
    background-color#000000ba;
    border-radius3px;
  }
  
  .custom-class h3 {
    colorwhite;
  }
  


效果

评价

angular使用组件时遇到一些错误整理

先看看代码exportclassSidenavComponentimplementsOnInit{ privatemediaMatcher:MediaQueryList=matchMedia(`(max-width...

angular使用第三方资源(举例面向插件)

问题Example :我们需要一张svg到页面中1.把图片放在assets文件夹下面以move.svg为例2.需要对单个资源进行模板注册import{C...

angular使用Proxy

Multiple entriesIf you need to proxy multiple entries to the same target define the configuration inproxy.conf.jsin...

angular路由导航配置

开发工具:VSCode打开终端输入命令创建crisis-list和hero-list组件nggeneratecomponentcrisis-listnggeneratecomponenthero...

angular环境搭建

开发工具:vscode命令执行:快捷键( Ctrl+Shift+` )或者打开终端近期一直写有关前端的东西,其实我是学后端C#.NET的,但是在...

angular常用创建命令

Angular开发在Angular开发中常见的一些命令创建命令ng generate component example 生成组件带有模版ng generate component...

关于angular常用创建命令。

在Angular开发中常见的一些命令创建命令ng generate component example生成组件带有模版ng generate component example -it...

基于angularHttpClient封装_HttpClient

基于angular的HttpClient封装_HttpClient,直接复制源码即可用包含常用的get、post、patch、delete和put请求;import{HttpC...

angular与Layui框架集成使用

目录" class="reference-link">目录 目录前言初使用 下载layui资源包创建angular项目 搭建angular环境(已搭建忽略)创...

angular与Layui框架集成使用(优化)

在使用后很多入坑 全局引入所有模块 Layui的所有模块可以全部一次性加载 所有模块可通过layui/lay/modules,这里可...

angular路由复用策略 (切换tabs页面内容不丢失,保持原来状态)

一、引言 路由在执行过程中对组件无状态操作,即路由离退时组件状态也一并被删除;当然在绝大多数场景下这是合理的。进入...

angular路由复用策略

路由在执行过程中对组件无状态操作,即路由离退时组件状态也一并被删除;当然在绝大多数场景下这是合理的。进入组件时会执...

vs core 运行报An unhandled exception occurred: spawn EPERM See "C:\Users\ADMINI~1\AppData\Local\Temp\ng-HWFidp\angular-errors.log"

前言:hello,大家好 I’m小付 好久不见,老实巴交的我又出现了, 今天给大家分享一下vs core运行报错遇到的一个坑。正文:...

angular 基本常用语法

常用语法//引导 import { platformBrowserDynamic } from &#39;@angular/platform-browser-dynamic&#39;;platformBrowserDy...

angular项目导入到本地运行报错

前 言:hello,大家好 我是你们熟悉的小付,就在咋天那个风高秋月的夜晚我又遭遇了项目的报错,看起来原因很简单以为只是简...
花间一壶酒,独酌无相亲。