javascript - Angular - 根据传入的变量更改组件/指令的大小
问题描述
我有一个微调器,我想在加载数据时显示它,但是,我希望能够有一些预定义的尺寸,我可以传入这些尺寸来更改显示的微调器的尺寸。
例如:
<spinner small>
将产生一个大小为 50px x 50px
<spinner large>
的微调器 将产生一个大小为 300px x 300px 的微调器
有什么办法可以做到这一点?
到目前为止,我有一个带有代码的标准微调器:
组件.html
<div class="loader middle"></div>
组件.css
.loader {
border: 16px solid lightgrey;
border-radius: 50%;
border-top: 16px solid red;
width: 120px;
height: 120px;
animation: spin 1s linear infinite;
margin: auto;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
解决方案
这很棘手,但可以做到。
我通常做的是以下几点:
this.size = '120px';
@Input('small') set small(value = 'foo') { // default value is irrelevant
this.size = !value ? '50px' : this.size;
}
让我解释一下:我们从一个具有默认值(无关紧要)的 setter 输入开始。
当用户不使用 small with 时<app-spinner small></app-spinner>
,该值将是默认值(此处为 'foo')。
如果用户输入了小属性,则该值变为''
,这是假的。
所以我们测试一下:如果值是假的,那么我们将值设置为 50px。如果不是,我们保持默认值 120px。
在你的微调器中,使用这个:
<div class="loader" [ngStyle]="{width: size, height: size}"></div>
推荐阅读
- apache-httpclient-4.x - 是否需要 Commons 组件 HttpClient IdleConnectionMonitorThread?
- mysql - Mysql触发器乘以复制到另一个表
- go - 运行 go 应用程序时出现 VS Code 错误
- algorithm - 这种递归关系的伪代码是什么
- java - 如何在一段时间内打破 if 链 .. do ...loop?
- python - 奇怪的,随机定时的抓取错误
- c - pthread_cancel() 是否有可能终止另一个意外线程?
- julia - 使用 DataFrame 在 Julia 中生成 15000 行 x 37 列的表的问题
- angular - 如何更改 ng2 图表中的 x 轴标签
- r - 为什么 tidyr::crossing 排序向量?