angular4 管道使用

pipe-test.component.html

<div class="pipe_div">
  <div class="pipe_title">日期:{{today}}</div>
  <div>
    <label>today | date</label>
    <strong>{{today | date}}</strong>
  </div>

  <div>
    <label>today | date: 'y-MM-dd' </label>
    <strong>{{today | date: 'y-MM-dd'}}</strong>
  </div>

  <div>
    <label>today | date: 'y-MM-dd HH:mm:ss' </label>
    <strong>{{today | date: 'y-MM-dd HH:mm:ss'}}</strong>
  </div>

  <div>
    <label>today | date: format</label>
    <strong>{{today | date: format}}</strong>
  </div>

  <div>
    <label>tool.formatDate(this.today)</label>
    <strong>{{todayStr}}</strong>
  </div>
</div>

<div class="pipe_div">
  <div class="pipe_title">数字:{{money}}</div>
  <div>
    <label>money | number: '3.4-5'</label>
    <strong>{{money | number: '3.4-5'}}</strong>
  </div>

  <div>
    <label>money | number: '2.2-2'</label>
    <strong>{{money | number: '2.2-2'}}</strong>
  </div>

  <div>
    <label>money | currency: 'USD': false </label>
    <strong>{{money | currency: 'USD': false }}</strong>
  </div>

  <div>
    <label>money | currency: 'CNY': true: '3.1-3'</label>
    <strong>{{money | currency: 'CNY': true: '3.1-3'}}</strong>
  </div>

  <div>
    <label>money | percent</label>
    <strong>{{money | percent}}</strong>
  </div>

  <div>
    <label>money | percent: '3.1-3'</label>
    <strong>{{money | percent: '3.1-3'}}</strong>
  </div>
</div>

<div class="pipe_div">
  <div class="pipe_title">字符串:{{abc}}</div>
  <div>
    <label>abc | slice: 2 : 4</label>
    <strong>{{abc | slice: 2 : 4}}</strong>
  </div>
  <div>
    <label>abc | lowercase | uppercase </label>
    <strong>{{abc | lowercase | uppercase }}</strong>
  </div>
</div>




pipe-test.component.scss

.pipe_div {
    padding: 8px 0;
    div label {
        display: inline-block;
        width: 200px;
    }
    div strong {
        width: 200px;
    }
    .pipe_title {
        font-size: 18px;
        padding: 6px;
        font-weight: 700;
    }
}


pipe-test.component.ts

import { Component, OnInit } from '@angular/core';
import { ToolService } from '../service/tool.service';

@Component({
  selector: 'app-pipe-test',
  templateUrl: './pipe-test.component.html',
  styleUrls: ['./pipe-test.component.scss']
})
export class PipeTestComponent implements OnInit {
  today: Date;
  money: number;
  abc: string;
  todayStr: String;
  constructor(private tool: ToolService) { }

  ngOnInit() {
    this.today = new Date();
    this.money = 9999999999.999;
    this.abc = 'abcdeFGhabc';
    this.todayStr = this.tool.formatDate(this.today);
  }

}


tool.service.ts

app.module.ts

import { Component, Injectable, NgZone } from '@angular/core';
import { DatePipe } from '@angular/common';

@ Injectable()
export class ToolService {
constructor( private datePipe: DatePipe) {
}
// 验证手机
checkPhone( phone) {
phone = ( phone + ''). replace( / [ \D ] / g, '');
if (!( / ^ 1 [ 34578 ] \d {9} $ /. test( phone))) {
return false;
} else {
return true;
}
}
// 身份证号合法性验证
// 支持15位和18位身份证号
// 支持地址编码、出生日期、校验位验证
IdentityCodeValid( code) {
const city = { 11 : '北京', 12 : '天津', 13 : '河北', 14 : '山西', 15 : '内蒙古', 21 : '辽宁', 22 : '吉林', 23 : '黑龙江 ', 31 : '上海', 32 : '江苏', 33 : '浙江', 34 : '安徽', 35 : '福建', 36 : '江西', 37 : '山东', 41 : '河南', 42 : '湖北 ', 43 : '湖南', 44 : '广东', 45 : '广西', 46 : '海南', 50 : '重庆', 51 : '四川', 52 : '贵州', 53 : '云南', 54 : '西藏 ', 61 : '陕西', 62 : '甘肃', 63 : '青海', 64 : '宁夏', 65 : '新疆', 71 : '台湾', 81 : '香港', 82 : '澳门', 91 : '国外 '};
let tip = '';
let pass = true;

if (! code || ! / ^ \d {6} ( 18 | 19 | 20 ) ? \d {2} ( 0 [ 1-9 ] | 1 [ 12 ])( 0 [ 1-9 ] | [ 12 ] \d | 3 [ 01 ]) \d {3} ( \d | X ) $ / i. test( code)) {
tip = '身份证号格式错误';
pass = false;
} else if (! city[ code. substr( 0, 2)]) {
tip = '地址编码错误';
pass = false;
} else {
// 18位身份证需要验证最后一位校验位
if ( code. length === 18) {
code = code. split( '');
// ∑(ai×Wi)(mod 11)
// 加权因子
const factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
// 校验位
const parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
let sum = 0;
let ai = 0;
let wi = 0;
for ( let i = 0; i < 17; i++) {
ai = code[ i];
wi = factor[ i];
sum += ai * wi;
}
const last = parity[ sum % 11];
if ( parity[ sum % 11] !== code[ 17]) {
tip = '校验位错误';
pass = false;
}
}
}
// if (!pass) {alert(tip); }
// return pass;
return { pass: pass, tip: tip};
}
bankCodeValid( card_number) {
// 卡号字符串化并去除空格,仅保留数字
const str_digits = ( card_number + ''). replace( / [ \D ] / g, '');
// 银行卡号必须为12-19位数字
if (! / ^ \d {12,19} $ /. test( str_digits)) {
return false;
}
// 根据luhn规则,将卡号数组化,并反转顺序,以便于操作
const luhn_digits = str_digits. split( ''). reverse(),
// 取第1位作为后续的验证号码
luhn_checkcode = parseInt( luhn_digits. shift(), 10);
const loop_length = luhn_digits. length;
let loop_index = loop_length;
let luhn_sum = 0;
for (; loop_index > 0; loop_index--) {
const _i = loop_length - loop_index,
_k = parseInt( luhn_digits[ _i], 10);
let _add_val = _k;
// 偶数字段 需要*2,并且大于10的数字要相加2个位数的值
if (( _i % 2) === 0) {
const _k2 = _k * 2;
switch ( _k2) {
case 10: _add_val = 1; break;
case 12: _add_val = 3; break;
case 14: _add_val = 5; break;
case 16: _add_val = 7; break;
case 18: _add_val = 9; break;
default: _add_val = _k2;
}
}
luhn_sum += _add_val;
}
/* 方法1
1. 从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与十位相加;
2. 计算所有数字的和(67);
3. 乘以9(603);
4. 取其个位数字(3),得到校验位。
*/
const luhn_sum9 = luhn_sum * 9,
luhn_sum9_last_code = parseInt(( luhn_sum9 + ''). replace( /\d + ( \d $ ) /, '$1'), 10);
return ( luhn_sum9_last_code === luhn_checkcode);
/* 方法2
1. 从校验位(即不包括该位数)开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1);
2. 把得到的数字加在一起;
3. 将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。
*/
// var luhn_sum_mod10 = luhn_sum%10,
// luhn_sum_checkcode = 10 - luhn_sum_mod10;
// return (luhn_sum_checkcode===luhn_checkcode);
/* 方法3
1. 从校验位(即不包括该位数)开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1);
2. 把得到的数字加在一起;
3. 再加上检验位的数值,将结果取模10,如果余数为0,则符合规则。
*/
// return (((luhn_sum+luhn_checkcode)%10) === 0);
}

// date转标准日期格式
dateFormatter( date) {
const y = date. getFullYear();
const m = date. getMonth() + 1;
const d = date. getDate();
return y + '-' + ( m < 10 ? ( '0' + m) : m) + '-'
+ ( d < 10 ? ( '0' + d) : d);
}
// 字符转date y-MM-dd
dateParser( s) {
if (! s) {
return new Date();
}
const ss = ( s. split( '-'));
const y = parseInt( ss[ 0], 10);
const m = parseInt( ss[ 1], 10);
const d = parseInt( ss[ 2], 10);
if (! isNaN( y) && ! isNaN( m) && ! isNaN( d)) {
return new Date( y, m - 1, d);
} else {
return new Date();
}
}
// 格式化时间
formatDate( date, flag?: Number) {
if ( date) {
switch ( flag) {
case 0:
return this. datePipe. transform( date, 'yyyy');
case 1:
return this. datePipe. transform( date, 'yyyy-MM');
case 3:
return this. datePipe. transform( date, 'yyyy-MM-dd HH:mm:ss');
default:
return this. datePipe. transform( date, 'yyyy-MM-dd');
}
} else {
return null;
}
}
}



app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { NgZorroAntdModule } from 'ng-zorro-antd';
import { LayoutModule } from './layout/layout.module';
import { LayoutComponent } from './layout/layout.component';
import { Service } from './service/app.service';
import { ToolService } from './service/tool.service';

import {LocationStrategy, HashLocationStrategy} from '@angular/common';
import { AppComponent } from './app.component';
import { PipeTestComponent } from './pipe-test/pipe-test.component';
import { DatePipe } from '@angular/common';

const routes: Routes = [
  {
      path: '',
      component: LayoutComponent,
      children: [
          { path: '', redirectTo: 'pipe', pathMatch: 'full'},
          { path: 'pipe', component: PipeTestComponent },
      ]
  },
];
@NgModule({
  declarations: [
    AppComponent,
    PipeTestComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpClientModule,
    LayoutModule,
    RouterModule.forRoot(routes),
    NgZorroAntdModule.forRoot()
  ],
  bootstrap: [AppComponent],
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  providers: [
    {provide: LocationStrategy, useClass: HashLocationStrategy},
    Service,
    ToolService,
    DatePipe
  ]
})
export class AppModule { }


app.module.ts
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值