码迷,mamicode.com
首页 > 其他好文 > 详细

Angular23 loading组件、路由配置、子路由配置、路由懒加载配置

时间:2018-05-20 11:40:23      阅读:1075      评论:0      收藏:0      [点我收藏+]

标签:redirect   hide   screen   inpu   .com   out   temp   下载   idt   

 

1 需求

  由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新;在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据。

 

2 loading组件简介

  loading组件就是专门负责遮罩处理的,可以自定一个loading组件,也可以使用别人创建号的loading模块;loading组件生效后的效果如下:

  参考资料:点击前往

    技术分享图片

 

3 编程步骤

  3.1 创建一个angular项目

    技巧01:版本必须是angular4及以上

  3.2 创建一个组件

  3.3 创建一个user模块

    技巧01:在user模块中创建多个组件

  3.4 路由配置

    技巧01:每个模块单独设置路由配置文件

    技巧02:利用路由实现模块懒加载

    3.4.1 子模块路由配置文件

      技巧01:子模块配置类中需要使用 forCild

        技术分享图片

      技巧02:子模块的配置文件配置好后需要在子模块中引入配置文件,直接引入配置模块中的那个类就行啦

        技术分享图片

技术分享图片
import { NgModule } from ‘@angular/core‘;
import { Routes, RouterModule } from ‘@angular/router‘;
import { UserListComponent } from ‘./user-list/user-list.component‘;
import { UserHomeComponent } from ‘./user-home/user-home.component‘;
import { UserInfoComponent } from ‘./user-info/user-info.component‘;

const routes: Routes = [
  {
    path:‘‘,
    component:UserHomeComponent,
    children: [
        {
            path:‘‘,
            redirectTo:‘userList‘,
            pathMatch:‘full‘
        },
        {
            path:‘userList‘,
            component:UserListComponent
        },
        {
            path:‘userInfo‘,
            component:UserInfoComponent
        }
    ]
}
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class UserRoutingModule { }
user.routing.module.ts
技术分享图片
import { NgModule } from ‘@angular/core‘;
import { CommonModule } from ‘@angular/common‘;

import { UserRoutingModule } from ‘./user-routing.module‘;
import { UserListComponent } from ‘./user-list/user-list.component‘;
import { UserInfoComponent } from ‘./user-info/user-info.component‘;
import { UserEditComponent } from ‘./user-edit/user-edit.component‘;
import { UserDetailComponent } from ‘./user-detail/user-detail.component‘;
import { UserListsComponent } from ‘./user-lists/user-lists.component‘;
import { UserHomeComponent } from ‘./user-home/user-home.component‘;

@NgModule({
  imports: [
    CommonModule,
    UserRoutingModule
  ],
  declarations: [UserListComponent, UserInfoComponent, UserEditComponent, UserDetailComponent, UserListsComponent, UserHomeComponent]
})
export class UserModule { }
user.module.ts

  3.4.2 根模块路由配置

    技巧01:根模块的路由配置文件中需要用 forRoot

      技术分享图片

    技巧02:需要在根模块中引入根路由配置类

      技术分享图片

技术分享图片
import { LoginComponent } from "./login/login.component";
import { NgModule } from "@angular/core";
import { RouterModule } from "@angular/router";


export const routes = [
    {
        path:‘‘,
        redirectTo:‘login‘,
        pathMatch:‘full‘
    },
    {
        path: ‘login‘,
        component: LoginComponent
    },
    {
        path:‘user‘,
        loadChildren:‘./user/user.module#UserModule‘
    },
    {
        path:‘**‘,
        component: LoginComponent
    }
]

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule]
  })
  export class AppRoutesModule { }
app.routes.module.ts
技术分享图片
import { BrowserModule } from ‘@angular/platform-browser‘;
import { NgModule } from ‘@angular/core‘;

import { NgZorroAntdModule } from ‘ng-zorro-antd‘;
import { LoadingModule, ANIMATION_TYPES  } from ‘ngx-loading‘;

import { AppComponent } from ‘./app.component‘;
import { TestDemoComponent } from ‘./test-demo/test-demo.component‘;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { LoginComponent } from ‘./login/login.component‘;
import { RouterModule } from ‘@angular/router‘;
import { AppRoutesModule } from ‘./app.routes.module‘;


@NgModule({
  declarations: [
    AppComponent,
    TestDemoComponent,
    LoginComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    LoadingModule.forRoot({
      animationType: ANIMATION_TYPES.wanderingCubes,
      backdropBackgroundColour: ‘rgba(0,0,0,0.1)‘, 
      backdropBorderRadius: ‘4px‘,
      primaryColour: ‘#ffffff‘, 
      secondaryColour: ‘#ffffff‘, 
      tertiaryColour: ‘#ffffff‘
  }),
    NgZorroAntdModule.forRoot(),
    AppRoutesModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
app.module.ts

  3.5 集成loading模块

    3.5.1 下载相关依赖

npm install --save ngx-loading

    3.5.2 在模块级别引入

      技巧01:loading模块需要共享,所以需要在共享模块或者跟模块进行引入

        技术分享图片

    3.5.3 在组件级别使用loading组件

      3.5.3.1 html编写

        技术分享图片

技术分享图片
<div class="my-container">
  <ngx-loading [show]="loading" [config]="config"></ngx-loading>
  <h2>
    这是登录页面 
  </h2>
  <hr />
  
  <label for="username">用户名</label>
  <input type="text" id="username" name="username" /> 
  <br />
  <label for="password">用户密码</label>
  <input type="password" id="password" name="password" />
  <button (click)="on_login_click()">登陆</button>
  
</div>
LoginComponent.html

       3.5.3.2 ts编写

        技巧01:点击登陆按钮后,开启遮罩;之后间隔5秒后交替开启遮罩

技术分享图片
import { Component, OnInit } from ‘@angular/core‘;
import { ANIMATION_TYPES } from ‘ngx-loading‘;

@Component({
  selector: ‘login‘,
  templateUrl: ‘./login.component.html‘,
  styleUrls: [‘./login.component.css‘]
})
export class LoginComponent implements OnInit {
  loading: boolean = false;
  config: object = {};

  private timer;

  constructor() {
    
  }

  ngOnInit() {
    this.config = {
      
      animationType: ANIMATION_TYPES.rectangleBounce,
      backdropBorderRadius: ‘0px‘,
      // backdropBackgroundColour: ‘#9f9ec8‘,
      fullScreenBackdrop: true,
      primaryColour: ‘skyblue‘,
      secondaryColour: ‘red‘
    }
  }

  on_login_click() {
    this.loading = true;
    this.timer = setInterval(
      () => {
        this.loading = !this.loading;
      },
      5000
    );
    alert("登陆");
  }

  ngOnDestroy() {
    if (this.timer) {
      alert(‘清除‘);
      clearInterval(this.timer);
    }
  }

}
LoginComponent.ts

  3.6 loading模块源代码

    参考资料 -> 点击前往

   3.7 本博文源代码

    获取源代码 -> 点击前往

 

Angular23 loading组件、路由配置、子路由配置、路由懒加载配置

标签:redirect   hide   screen   inpu   .com   out   temp   下载   idt   

原文地址:https://www.cnblogs.com/NeverCtrl-C/p/9062750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!