项目中遇到倒计时需求,考虑到以后在其他模块也会用到,就自己封装了一个组件。便于以后复用。

组件需求如下:
- 接收父级组件传递截止日期
- 接收父级组件传递标题
组件效果
变量
组件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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angular2倒计时组件
# angular倒计时组件
# angular2倒计时
# 详解Angular 4.x 动态创建组件
# Angular 2父子组件数据传递之@ViewChild获取子组件详解
# Angular2学习教程之组件中的DOM操作详解
# angular中不同的组件间传值与通信的方法
# Angular父组件调用子组件的方法
# Angular5给组件本身的标签添加样式class的方法
# Angular 2父子组件数据传递之@Input和@Output详解(下)
# Angular入口组件(entry component)与声明式组件的区别详解
# 详解angular2封装material2对话框组件
# 简单谈谈Angular中的独立组件的使用
# 截止日期
# 也会
# 考虑到
# 装了
# 大家多多
# 倒计时
# 复用
# 每一秒
# width
# css
# height
# px
# scss
# top
# content
# hour
# minute
# bottom
# left
# float
相关文章:
建站主机核心功能解析:服务器选择与网站搭建流程指南
建站主机服务器选型指南与性能优化方案解析
建站主机CVM配置优化、SEO策略与性能提升指南
学校为何禁止电信移动建设网站?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
建站之星备案流程有哪些注意事项?
已有域名和空间,如何快速搭建网站?
如何将凡科建站内容保存为本地文件?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何通过PHP快速构建高效问答网站功能?
Bpmn 2.0的XML文件怎么画流程图
如何选购建站域名与空间?自助平台全解析
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何通过虚拟机搭建网站?详细步骤解析
建站之星安装需要哪些步骤及注意事项?
如何在企业微信快速生成手机电脑官网?
购物网站制作公司有哪些,哪个购物网站比较好?
建站ABC备案流程中有哪些关键注意事项?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
宁波自助建站系统如何快速打造专业企业网站?
如何快速辨别茅台真假?关键步骤解析
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
建站之星代理费用多少?最新价格详情介绍
制作旅游网站html,怎样注册旅游网站?
如何在阿里云购买域名并搭建网站?
微课制作网站有哪些,微课网怎么进?
如何快速搭建FTP站点实现文件共享?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何快速完成中国万网建站详细流程?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
Python如何创建带属性的XML节点
如何快速重置建站主机并恢复默认配置?
香港服务器如何优化才能显著提升网站加载速度?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何用PHP快速搭建CMS系统?
建站主机选哪种环境更利于SEO优化?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
网站制作软件有哪些,制图软件有哪些?
如何用美橙互联一键搭建多站合一网站?
建站之星如何通过成品分离优化网站效率?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
专业网站建设制作报价,网页设计制作要考什么证?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何快速搭建高效香港服务器网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。