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的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
JavaScript中字面量与函数的基本使用知识
Oct 20 Javascript
PHP捕捉异常中断的方法
Oct 24 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
JavaScript使用ZeroClipboard操作剪切板
May 10 Javascript
angular+webpack2实战例子
May 23 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
Aug 28 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 jQuery
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/25 PHP
php计算年龄精准到年月日
2015/11/17 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
详解Python中for循环的使用
2015/04/14 Python
python用户管理系统
2018/03/13 Python
python 读入多行数据的实例
2018/04/19 Python
pyshp创建shp点文件的方法
2018/12/31 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
django下创建多个app并设置urls方法
2020/08/02 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
六一儿童节演讲稿
2014/05/23 职场文书
车间核算员岗位职责
2014/07/01 职场文书
高中教师个人工作总结
2015/02/10 职场文书
刘胡兰观后感
2015/06/16 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
Java 在生活中的 10 大应用
2021/11/02 Java/Android
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技