Javascript 如何在typescript中动态创建输入类型文本
我知道在javascript中,我可以用下面的方法创建一个元素Javascript 如何在typescript中动态创建输入类型文本,javascript,angular,typescript,Javascript,Angular,Typescript,我知道在javascript中,我可以用下面的方法创建一个元素 var input = document.createElement("input"); input.type = "text"; input.className = "css-class-name"; // set the CSS class document.body.appendChild(input); 在我的angular应用程序中,我从app.component.ts的ngOnI
var input = document.createElement("input");
input.type = "text";
input.className = "css-class-name"; // set the CSS class
document.body.appendChild(input);
在我的angular应用程序中,我从app.component.ts的ngOnInit
中的http服务获取一些数组值
我有一个基于数组值动态创建输入类型文本的场景。如果数组值为5,则应创建五个输入类型
可以用typescript吗?或者我应该在typescript中也使用上面的代码吗
处理这种情况的最佳方法是什么?使用
*ngFor
,这是一个角度指令,在阵列的元素上循环。
如果在模型中有公共数组=[1,2,3,4]
,在模板中有
<ul>
<li *ngFor="let element of array">{{ element }}</li>
</ul>
- {{element}
这将打印以下DOM:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
- 一,
- 二,
- 三,
- 四,
因此,对于您的问题,要创建输入,只需将输入放入循环中
<div *ngFor="let element of array">
<input type="text" class="css-class-name">
</div>
顺便说一下,这是角度模板中的基本操作。
我敦促您从官方网站了解Angular可以做什么。使用
*ngFor
,这是一个Angular指令,用于循环数组的元素。
如果在模型中有公共数组=[1,2,3,4]
,在模板中有
<ul>
<li *ngFor="let element of array">{{ element }}</li>
</ul>
- {{element}
这将打印以下DOM:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
- 一,
- 二,
- 三,
- 四,
因此,对于您的问题,要创建输入,只需将输入放入循环中
<div *ngFor="let element of array">
<input type="text" class="css-class-name">
</div>
顺便说一下,这是角度模板中的基本操作。
我敦促您从官方网站了解Angular可以做什么。创建一个表单控件包
输入:FormControl[]=[];
恩戈尼尼特(){
this.myService.getNumberOfInputs().subscribe(计数=>{
for(设i=0;i
创建一组表单控件
输入:FormControl[]=[];
恩戈尼尼特(){
this.myService.getNumberOfInputs().subscribe(计数=>{
for(设i=0;i
组件:
public inputControlsArr : Array<any> = [];
this.service.getValues().subscribe((values)=>{
this.inputControlsArr = values;
});
<div *ngFor="let input of inputControlsArr; let i = index;">
<input type="text" [(ngModel)}="inputControlsArr[i]"/>
</div>
public-inputControlsArr:Array=[];
this.service.getValues().subscribe((值)=>{
this.inputControlsArr=值;
});
模板:
public inputControlsArr : Array<any> = [];
this.service.getValues().subscribe((values)=>{
this.inputControlsArr = values;
});
<div *ngFor="let input of inputControlsArr; let i = index;">
<input type="text" [(ngModel)}="inputControlsArr[i]"/>
</div>
组件:
public inputControlsArr : Array<any> = [];
this.service.getValues().subscribe((values)=>{
this.inputControlsArr = values;
});
<div *ngFor="let input of inputControlsArr; let i = index;">
<input type="text" [(ngModel)}="inputControlsArr[i]"/>
</div>
public-inputControlsArr:Array=[];
this.service.getValues().subscribe((值)=>{
this.inputControlsArr=值;
});
模板:
public inputControlsArr : Array<any> = [];
this.service.getValues().subscribe((values)=>{
this.inputControlsArr = values;
});
<div *ngFor="let input of inputControlsArr; let i = index;">
<input type="text" [(ngModel)}="inputControlsArr[i]"/>
</div>
您的意思是,如果数组的长度为5,则?是的,确切地说……TypeScript编译为JavaScript,并且是JavaScript的超集。用JavaScript编写的任何内容都将是有效的TypeScript。但是,在Angular中,使用createElement
等创建节点不是一个好主意。您可能要创建一个包含5个元素的数组,并将一个*ngFor
绑定到该数组。您的代码已经是有效的Typescript,除非您没有添加类型。@connexo true,但不建议使用Angular。您的意思是如果数组的长度为5?是的,确切地说……Typescript编译为JavaScript,并且是JavaScript的超集。用JavaScript编写的任何内容都将是有效的TypeScript。但是,在Angular中,使用createElement
等创建节点不是一个好主意。您可能要创建一个包含5个元素的数组,并将*ngFor
绑定到该数组。您的代码已经是有效的Typescript,除非您没有添加类型。@connexo true,但在Angular中不建议使用它。