Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在typescript中动态创建输入类型文本_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 如何在typescript中动态创建输入类型文本

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

我知道在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的
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中不建议使用它。