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 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
javascript如何实现暂停功能
Nov 06 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
微信小程序 animation API详解及实例代码
Oct 08 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
详解VUE中v-bind的基本用法
Jul 13 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
mpvue小程序循环动画开启暂停的实现方法
May 15 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
通过layer实现可输入的模态框的例子
Sep 27 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
php session_decode函数用法讲解
2019/05/26 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
初步理解Python进程的信号通讯
2015/04/09 Python
详解python中的 is 操作符
2017/12/26 Python
快速了解Python中的装饰器
2018/01/11 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
Python闭包思想与用法浅析
2018/12/27 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python能做哪些生活有趣的事情
2020/09/09 Python
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
小学红领巾中秋节广播稿
2014/01/13 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
乳制品整治工作方案
2014/05/29 职场文书
校园运动会广播稿
2015/08/19 职场文书
情况说明书怎么写
2015/10/08 职场文书
高三语文教学反思
2016/02/16 职场文书
z-index不起作用
2021/03/31 HTML / CSS
react国际化react-intl的使用
2021/05/06 Javascript