javascript - 是否有类似于 JavaScript .querySelectorAll() 的角度?
问题描述
我在 JavaScript 中创建了一个库存计算器,它根据重量计算物品数量。它有 4 个输入。我想用角度创建相同的计算器。有没有办法在 .querySelectorAll() 中使用 JavaScript 但在 Angular 中获取元素数组?下面是我的 JavaScript 代码。我真的很想知道我是否可以用 Angular 完成同样的任务。这是计算器的链接,可以更好地了解它的作用。
let message = document.getElementById('message');
let IDs = document.getElementById('IDs')
.querySelectorAll(
"#contrlQty, #ctrl-Wt, #massWt, #singlWt, #output, #message"
);
input = () => {
message.innerHTML = ""; //Message is Gone!
}
calculate = () => {
if(IDs[2].value == "" && IDs[3].value == "" && isNaN(IDs[4])){
message.innerHTML = "You must enter at least a mass weight and a single object weight value";
return false;
}
let count = IDs[4];
if(IDs[0].value > 0 && IDs[1].value > 0){
message.innerHTML = "";
IDs[3].value = IDs[1].value / IDs[0].value;
let result = IDs[2].value / IDs[3].value;
let n = result.toFixed(0);
count.innerHTML = n;
}
else if(IDs[0].value == 0 && IDs[1].value == 0)
{
let result = IDs[2].value / IDs[3].value;
let n2 = result.toFixed(0);
count.innerHTML = n2;
}
}
reset = () => {
IDs[0].value = 0;
IDs[1].value = "";
IDs[2].value = "";
IDs[3].value = "";
IDs[4].innerHTML = 0;
}
解决方案
这是一个stackBlitz,它接受一个数组并创建FormArray onInit,然后将其推送到dom。我还添加了一个按钮,用于记录值并在 DOM 上显示它们
https://stackblitz.com/edit/angular-ivy-dx6j6g
生病放置 ts 文件代码和 HTML 以防 stackblitz 决定再次搞砸。
import { Component, OnInit } from '@angular/core';
import { FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit{
numberOfFields = 5;
values = []
inputs: FormArray;
ngOnInit() {
this.inputs = new FormArray([])
for(let i=0; i < this.numberOfFields; i++){
this.inputs.push(new FormControl(null))
}
}
getControl(i) {
return this.inputs.at(i) as FormControl;
}
getValues() {
this.values = [...this.inputs.value]
}
}
<div class="formInput" *ngFor="let input of inputs.controls; index as i">
<input [formControl]="getControl(i)">
</div>
<button (click)="getValues()">get values</button>
<hr>
<p *ngFor="let val of values">{{val}}</p>
推荐阅读
- sql-server - SQL Server 网络接口库无法取消注册服务主体名称 (SPN)
- windows - 如何找到加载的asr移动代理驱动的版本?
- git - 如何使用 ssh auth 在代码提交存储库上使用 go get 命令?
- git - 如何在git中只提交一个组件javascript文件
- vue.js - `vb-modal` 和 `vb-toggle` 等属性如何工作?他们在哪里听?
- angular - Angular 6 - 可重用组件 - 路线导航
- excel - 如何使用 VBA 将本地 .msg 文件导入 Outlook 文件夹?
- python - 如何将 pygame.mixer 声音多线程化到 tkinter 程序中
- javascript - Collapse - 默认情况下打开手风琴第一个元素
- firebase - 集合组查询是否从具有相同名称的所有集合中获取数据?