Hi am sure this is asked before but am not able to find an answer here. i have an array of string which is loop and rendered as text box inside a form while submitting the form all the value with new changed value should submit to onSubmit()
<form name="form" (ngSubmit)="f.form.valid && onSubmit()" #f="ngForm" novalidate>
<input type="text" class="form-control" name="caption" [(ngModel)]="blockdummyJson.Properties.Caption" #Caption="ngModel"
[ngClass]="{ 'is-invalid': f.submitted && Caption.invalid }" required />
<div *ngIf="f.submitted && Caption.invalid" class="invalid-feedback">
<div *ngIf="Caption.errors.required">radio button caption is required</div>
</div>
<input type="button" value="addOption" (click)="addOptionToRadioOption()" />
<div *ngFor="let option of blockdummyJson.Properties.Options; let i = index">
<input type="text" class="form-control" [(ngModel)]="blockdummyJson.Properties.Options[i]" />
</div>
<div class="form-group">
<button class="btn btn-primary">Add</button>
</div>
</form>
in side component
radioOption:any=[];
data: any;
blockdummyJson: any;
blockName: string = 'OptionBuildingBlock';
activityInfo: any;
constructor(private messageservice: MessageService,
private httpservice: ConfigService,
private communicationservice: CommunicationService, ) {
var self = this;
this.activityInfo = this.data;
this.httpservice.getConfig(ConfigValue.apiURI + 'BuildingBlocks/' + this.blockName).subscribe(
data => {
self.blockdummyJson = data;
},
err => { },
() => console.log('getting BuildingBlocks config completed')
)
}
addOptionToRadioOption()
{
this.blockdummyJson.Properties.Options.push("sample Value");
}
onSubmit() {
debugger;
}
the data coming from server Options include array
Options=['test','test1',test2'];
thanks in advance.
You are already having two way data-binding, on every user input it will get updated to the DOM. Instead of depending ngForm, you are use modelObj.
export class AppComponent {
name = 'Angular';
blockdummyJson = {
Properties: {
Options :['test','test1','test2'],
Caption: ''
}
};
addOptionToRadioOption()
{
this.blockdummyJson.Properties.Options.push(this.blockdummyJson.Properties.Caption);
}
onSubmit(formObj){
console.log(this.blockdummyJson);
}
Template:
<form name="form" (ngSubmit)="f.valid && onSubmit(f)" #f="ngForm" novalidate>
<input type="text" class="form-control" name="caption" [(ngModel)]="blockdummyJson.Properties.Caption" #Caption="ngModel"
[ngClass]="{ 'is-invalid': f.submitted && Caption.invalid }" required />
<div *ngIf="f.submitted && Caption.invalid" class="invalid-feedback">
<div *ngIf="Caption.errors.required">radio button caption is required</div>
</div>
<input type="button" value="addOption" (click)="addOptionToRadioOption()" />
<div *ngFor="let option of blockdummyJson.Properties.Options; let i = index">
<input type="text" name="options-{{i}}" class="form-control" [(ngModel)]="blockdummyJson.Properties.Options[i]" />
</div>
<div class="form-group">
<button class="btn btn-primary">Add</button>
</div>
</form>
StackBlitz: https://stackblitz.com/edit/angular-vsxwuy