【问题标题】:How to show spinner in angular 6如何以角度 6 显示微调器
【发布时间】:2018-12-02 15:48:13
【问题描述】:

我是 Angular 和 Web 开发的新手,但能够设计各种网页并使用 HTTP 客户端模块从服务器获取数据。

从服务器获取数据时,我想显示进度微调器,但我无法做到。我搜索了谷歌,但没有什么让我这样做。请帮助我实现这一目标。

代码:

login.component.ts

 userLogin() {
        console.log('logging in');
        this.eService.signIn(this.user_name, this.password)
        .subscribe(
            data => {
                console.log(data);
               this.admin = data;
               if ( this.admin.firstLogin === true) {
                   // go to update admin password
               } else {
                this.router.navigate(['/dashboard']);
                }
               localStorage.setItem('isLoggedin', 'true');
             }
        );
    }

登录.html

<div class="login-page" [@routerTransition]>
    <div class="row justify-content-md-center">
        <div class="col-md-4">
            <img src="assets/images/logo.png" width="150px" class="user-avatar" />
            <h1>Users/h1>
            <form role="form">
                <div class="form-content">
                    <div class="form-group">
                        <input type="text" name="username" [(ngModel)]="user_name" class="form-control input-underline input-lg" id="" placeholder="username">
                    </div>

                    <div class="form-group">
                        <input type="password" name="password" [(ngModel)]="password" (keyup.enter)="userLogin()" class="form-control input-underline input-lg" id="" placeholder="password">
                    </div>
                </div>
                <a class="btn rounded-btn" (click)="userLogin()"> Log in </a>
                &nbsp;
                <a class="btn rounded-btn" >Clear</a>
            </form>
        </div>
    </div>
</div>

所以当我请求登录服务时,我想显示微调器,请帮助我,我该怎么做?

我知道这对这里的许多开发人员来说很简单,但对我来说有点困难。

【问题讨论】:

    标签: angular angular-material spinner


    【解决方案1】:

    添加此 HTML 代码

    <div class="spinner-border" role="status" *ngIf="your_condition">
          <span class="sr-only" id="loadbar"></span>
    </div>
    

    在 .css 文件中(添加必要的样式),

    #loadbar{
      animation: spin 2s linear infinite;
      }
    
    @keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
    }
    
    set the condition to true or false as per your code in .ts file
    
    

    【讨论】:

      【解决方案2】:

      还在搜索 angular 中加载微调器的朋友,请随意查看:

      【讨论】:

        【解决方案3】:

        您可以使用ng4-loading-spinner

        执行npm i ng4-loading-spinner --save

        将模块导入您的应用程序根模块

        import { Ng4LoadingSpinnerModule } from 'ng4-loading-spinner';
        

        创建一个导入条目

         imports: [ Ng4LoadingSpinnerModule.forRoot() ]
        

        将微调器组件包含到您的根级组件中。

        <ng4-loading-spinner> </ng4-loading-spinner>
        

        subscribe 回调中使用show()hide()

        import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';
         constructor(
                private spinnerService: Ng4LoadingSpinnerService
            ) { }
            userLogin() {
        
                this.spinnerService.show();
                    console.log('logging in');
                    this.eService.signIn(this.user_name, this.password)
                    .subscribe(
                        data => {
                            console.log(data);
                           this.admin = data;
                           if ( this.admin.firstLogin === true) {
                               // go to update admin password
                           } else {
                            this.router.navigate(['/dashboard']);
                            }
                           localStorage.setItem('isLoggedin', 'true');
                         },
                       ()=>this.spinnerService.hide();
                    );
                }
        

        Live Demo

        【讨论】:

        • 嗨@Vikas 我使用了这个,但是当我尝试在我的 app.module 中导入时,我得到Error: "Fetch error: 404 Not Found Instantiating http://localhost:[..]/ng4-loading-spinner Loading http://localhost:[..]/client/app/app.module.js Loading client/main.js" 我使用 Angular 5,根据文档应该支持它
        【解决方案4】:

        将微调器添加到您的 HTML 代码中,如下所示:

        <img *ngIf="loading" src="assets/my-spinner.gif" /> <!-- Or use a CSS one if you like -->
        

        然后,在您的 Typescript 中,您需要创建一个名为 loading 的变量,并将其设置为:

        userLogin() {
            console.log('logging in');
            this.loading = true; // Add this line
            this.eService.signIn(this.user_name, this.password)
            .subscribe(
                data => {
                    console.log(data);
                   this.loading = false; // And this one
                   this.admin = data;
                   if ( this.admin.firstLogin === true) {
                       // go to update admin password
                   } else {
                    this.router.navigate(['/dashboard']);
                    }
                   localStorage.setItem('isLoggedin', 'true');
                 }
            );
        }
        

        这将在服务运行时将 loading 设置为 true

        【讨论】:

        • 如果我这样添加,我又要考虑gif的位置了吧?
        • 你想达到什么目的?您可以使用 CSS 放置它
        • 我想在当前打开的页面上显示..就像覆盖
        • 是的,使用 CSS。这是一个基本的例子stackblitz.com/edit/…只需点击按钮即可看到微调器
        猜你喜欢
        • 2018-10-10
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        相关资源
        最近更新 更多