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 EasyUI 开源插件套装 完全替代ExtJS
Mar 24 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 Javascript
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
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
星际争霸任务指南——人族
2020/03/04 星际争霸
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python模拟登录12306的方法
2014/12/30 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python执行时间的计算方法小结
2017/03/17 Python
python实现AES加密与解密
2019/03/28 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
django用户登录验证的完整示例代码
2019/07/21 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python 6行代码制作月历生成器
2020/09/18 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
群众路线批评与自我批评
2014/02/06 职场文书
保护环境的标语
2014/06/09 职场文书
医学生求职自荐书
2014/06/12 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
革命电影观后感
2015/06/18 职场文书
小组口号霸气押韵
2015/12/24 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
详解Vue slot插槽
2021/11/20 Vue.js
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS