Quantcast
Viewing all articles
Browse latest Browse all 1314

Is there a way to flex field generate by for loops?

This is my code that generates fields using a for loop. I'm expecting the email and phone number fields to be displayed side by side, but instead, they are stacked on top of each other. I believe this issue is due to the for loop. Is there a way to make the email and phone number fields appear side by side while keeping the other form fields vertical?

Here is my code.

<form *ngIf="dynamicForm" [formGroup]="dynamicForm" ><div *ngFor="let field of formData.fields"><ng-container [ngSwitch]="field.type"><div *ngSwitchCase="'text'" [ngClass] = "{'two-flex-items':false,'form-group':true}"><input [formControlName]="field.name" [id]="field.name" type="text" [placeholder]="field.placeholder"                [required]="field.required"></div><div *ngSwitchCase="'email'"><div class="form-group"><div><input [formControlName]="field.name" [id]="field.name" type="email" [placeholder]="field.placeholder"                    [required]="field.required"></div></div></div><div *ngSwitchCase="'tel'"><div class="form-group"><div ><input [formControlName]="field.name" [id]="field.name" type="tel" [placeholder]="field.placeholder"                    [required]="field.required"></div></div></div><div *ngSwitchCase="'textarea'" [ngClass] = "{'two-flex-items':false,'form-group':true}"><input [formControlName]="field.name" [id]="field.name" type="textarea" [placeholder]="field.placeholder"                [required]="field.required"></div><div *ngSwitchCase="'select'" [ngClass] = "{'two-flex-items':false,'form-group':true}"><select [formControlName]="field.name" [id]="field.name" [required]="field.required"><option value="" disabled selected>{{field.placeholder}}</option><option *ngFor="let option of field.options" [value]="option.value">                  {{option.placeholder}}</option></select></div></ng-container><div *ngIf="dynamicForm.get(field.name).invalid && dynamicForm.get(field.name).touched">            {{field.name}} is required</div></div><button type="submit" (click)="onSubmit()" [disabled]="dynamicForm.invalid"          [ngStyle]="{'background-color': formData.theme.primaryColor}">          Submit</button></form>

This is the scss

.form-group{    width: 100%;    input,textarea,select{        width: 100%;        outline: none;        border: 1px solid #e6e6e6;        padding: 10px;        font-size: 14px;        border-radius: 4px;&::placeholder{            color: #cecdcd;        }&:focus{            border:1px solid#afafaf;        }    }    .error-msg{        color: red;        margin-top: 3px;        padding: 3px 10px;    }}.form-container{    background-color: white;    border-radius: 6px;    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.068);    margin: 20px;    padding: 20px;    padding-top: 40px;    display: flex;    flex-direction: column;    gap: 20px;}.two-flex-items {    display: flex;    gap: 20px; /* Adjust the gap between inputs */  }

Viewing all articles
Browse latest Browse all 1314

Trending Articles