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 相关文章推荐
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
javascript实现最长公共子序列实例代码
Feb 05 Javascript
js获取 gif 的帧数的代码实例
Sep 10 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 Javascript
react国际化化插件react-i18n-auto使用详解
Mar 31 Javascript
JS实现联想、自动补齐国家或地区名称的功能
Jul 07 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
jquery foreach使用示例
2013/09/12 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
vue.js中created方法作用
2018/03/30 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
图文详解vue框架安装步骤
2019/02/12 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python中类的一些方法分析
2014/09/25 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
网络事业创业计划书范文
2014/01/09 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
家长会主持词
2014/03/26 职场文书
五好关工委申报材料
2014/05/31 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
环保主题班会教案
2015/08/13 职场文书