angular2倒计时组件使用详解


Posted in Javascript onJanuary 12, 2017

项目中遇到倒计时需求,考虑到以后在其他模块也会用到,就自己封装了一个组件。便于以后复用。

组件需求如下:
- 接收父级组件传递截止日期
- 接收父级组件传递标题

组件效果

angular2倒计时组件使用详解

变量

angular2倒计时组件使用详解

组件countdown.html代码

<div class="count-down">
  <div class="title">
    <h4>
      {{title}}
    </h4>
  </div>
  <div class="body">
    <div class="content">
      <div class="top">
        {{hour}}
      </div>
      <div class="bottom">
        小时
      </div>
    </div>
    <div class="content">
      <div class="top">
        {{minute}}
      </div>
      <div class="bottom">
        分钟
      </div>
    </div>
    <div class="content">
      <div class="top">
        {{second}}
      </div>
      <div class="bottom">
        秒
      </div>
    </div>
  </div>
</div>

组件countdown.scss代码

.count-down{
  width:100%;
  height:100px;
  background: rgba(0,0,0,0.5);
  padding: 2px 0;
  .body{
    margin-top: 8px;
    .content{
      width:29%;
      float: left;
      margin: 0 2%;
      .top{
        font-size: 20px;;
        line-height: 30px;
        color: black;
        background: white;
        border-bottom: 2px solid black;
      }
      .bottom{
        font-size: 14px;
        line-height: 20px;
        background: grey;
      }
    }
  }
}

组件countdown.component.ts代码

import { Component, OnInit, Input, OnDestroy, AfterViewInit } from '@angular/core';

@Component({
 selector: 'roy-countdown',
 templateUrl: './countdown.component.html',
 styleUrls: ['./countdown.component.scss']
})
export class CountdownComponent implements AfterViewInit, OnDestroy {
 // 父组件传递截止日期
 @Input() endDate: number;
 // 父组件传递标题
 @Input() title: string;
 // 小时差
 private hour: number;
 // 分钟差
 private minute: number;
 // 秒数差
 private second: number;
 // 时间差
 private _diff: number;
 private get diff() {
  return this._diff;
 }
 private set diff(val) {
  this._diff = Math.floor(val / 1000);
  this.hour = Math.floor(this._diff / 3600);
  this.minute = Math.floor((this._diff % 3600) / 60);
  this.second = (this._diff % 3600) % 60;
 }
 // 定时器
 private timer;

 // 每一秒更新时间差
 ngAfterViewInit() {
  this.timer = setInterval(() => {
   this.diff = this.endDate - Date.now();
  }, 1000);
 }

 // 销毁组件时清除定时器
 ngOnDestroy() {
  if (this.timer) {
   clearInterval(this.timer);
  }
 }
}

使用方法demo.html

<roy-countdown title="距离考试还有:" [endDate]="endDate"></roy-countdown>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
对于Form表单reset方法的新认识
Mar 05 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
jQuery Raty 一款不错的星级评分插件
Aug 24 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
Feb 26 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 #Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 #Javascript
js中常用的Math方法总结
Jan 12 #Javascript
Vue数据驱动模拟实现4
Jan 12 #Javascript
移动端点击态处理的三种实现方式
Jan 12 #Javascript
js手机号批量滚动抽奖实现代码
Apr 17 #Javascript
js图片轮播手动切换特效
Jan 12 #Javascript
You might like
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
python装饰器decorator介绍
2014/11/21 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python实现词法分析器
2019/01/31 Python
详解python中递归函数
2019/04/16 Python
python hash每次调用结果不同的原因
2019/11/21 Python
python 伯努利分布详解
2020/02/25 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Android interview questions
2016/12/25 面试题
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
上级检查欢迎词
2014/01/18 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
工程技术员岗位职责
2015/04/11 职场文书
书法社团活动总结
2015/05/07 职场文书
应收账款管理制度
2015/08/06 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL