当最后一个输入有值时如何添加新的<input>?
How add new <input> when the last input has a value?
我开始制作表格 - stackblitz,但我不知道如何进一步
我想做和这里一样的效果:
如图实现如下:github - RESTer
我试过方法(更改),但在按 Enter 后有效,但不适合我
您可以处理最后一行的 input
事件:
<div *ngFor="let header of headers; let i = index; let isLast = last" fxLayout="row" fxLayoutGap="25px">
<mat-form-field fxFlex="25">
<input matInput placeholder="Name" type="text" name="name-{{i}}" value="{{header.name}}"
(input)="addInput(isLast)">
</mat-form-field>
<mat-form-field fxFlex>
<input matInput placeholder="Value" type="text" name="value-{{i}}" value="{{header.value}}">
</mat-form-field>
...
</div>
用addInput
方法,第一次输入内容变化时添加一条新记录:
export class DynamicformComponent implements OnInit {
public headers: any[] = [];
ngOnInit() {
this.headers = [
{ name: 'Accept-Encoding', value: 'gzip' },
{ name: 'Accept-Charset', value: 'utf-8' },
{ name: 'User-Agent', value: '' },
{ name: 'Accept', value: 'text/plain' },
{ name: 'Cookie', value: '' },
{ name: '', value: '' }
];
}
addInput(isLast: boolean) {
if (isLast) {
this.headers.push({ name: '', value: '' });
}
}
removeInput(index) {
this.headers.splice(index, 1)
}
}
有关演示,请参阅 this stackblitz。
如果您使用响应式表单,则可以使用 formArray。看看 https://angular.io/guide/reactive-forms#dynamic-controls-using-form-arrays
我开始制作表格 - stackblitz,但我不知道如何进一步
我想做和这里一样的效果:
我试过方法(更改),但在按 Enter 后有效,但不适合我
您可以处理最后一行的 input
事件:
<div *ngFor="let header of headers; let i = index; let isLast = last" fxLayout="row" fxLayoutGap="25px">
<mat-form-field fxFlex="25">
<input matInput placeholder="Name" type="text" name="name-{{i}}" value="{{header.name}}"
(input)="addInput(isLast)">
</mat-form-field>
<mat-form-field fxFlex>
<input matInput placeholder="Value" type="text" name="value-{{i}}" value="{{header.value}}">
</mat-form-field>
...
</div>
用addInput
方法,第一次输入内容变化时添加一条新记录:
export class DynamicformComponent implements OnInit {
public headers: any[] = [];
ngOnInit() {
this.headers = [
{ name: 'Accept-Encoding', value: 'gzip' },
{ name: 'Accept-Charset', value: 'utf-8' },
{ name: 'User-Agent', value: '' },
{ name: 'Accept', value: 'text/plain' },
{ name: 'Cookie', value: '' },
{ name: '', value: '' }
];
}
addInput(isLast: boolean) {
if (isLast) {
this.headers.push({ name: '', value: '' });
}
}
removeInput(index) {
this.headers.splice(index, 1)
}
}
有关演示,请参阅 this stackblitz。
如果您使用响应式表单,则可以使用 formArray。看看 https://angular.io/guide/reactive-forms#dynamic-controls-using-form-arrays