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 相关文章推荐
一实用的实现table排序的Javascript类库
Sep 12 Javascript
js获取url参数的使用扩展实例
Dec 29 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
vue表单绑定实现多选框和下拉列表的实例
Aug 12 Javascript
vue 2.0 购物车小球抛物线的示例代码
Feb 01 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
微信小程序页面滚动到指定位置代码实例
Sep 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
两种php调用Java对象的方法
2006/10/09 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
python杀死一个线程的方法
2015/09/06 Python
pandas中去除指定字符的实例
2018/05/18 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
python算的上脚本语言吗
2020/06/22 Python
Python基于Faker假数据构造库
2020/11/30 Python
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
Linux的文件类型
2012/03/07 面试题
优秀教导主任事迹材料
2014/05/09 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
团队拓展训练感想
2015/08/07 职场文书
初中语文教学随笔
2015/08/15 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang