0

I am trying to create a web form from a JSON file. I am getting some issues creating the form. My codes are as mentioned below:

JSON file data:

{
 "objCountry": [{
  "country": "United Arab Emirates",
  "fields": [{
      "name": "common",
      "label": "Supplier Details",
      "group": [{
          "name": "supplierName",
          "label": "Supplier Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierOrgType",
          "label": "Tax Organization Type *",
          "options": [{
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Individual/ Sole Proprietor",
              "value": "Individual/ Sole Proprietor"
            },
            {
              "text": "C Corporation",
              "value": "C Corporation"
            },
            {
              "text": "S Corporation",
              "value": "S Corporation"
            },
            {
              "text": "Partnership",
              "value": "Partnership"
            },
            {
              "text": "Trust / Estate",
              "value": "Trust / Estate"
            },
            {
              "text": "LLC - C Corporation",
              "value": "LLC - C Corporation"
            },
            {
              "text": "LLC - S Corporation",
              "value": "LLC - S Corporation"
            },
            {
              "text": "LLC - Partnership",
              "value": "LLC - Partnership"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "businessClassification",
          "label": "Business Classification *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierSsnNumber",
          "label": "Tax ID/SSN *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    },
    {
      "name": "address",
      "label": "Address Details",
      "group": [{
          "name": "txtSupplierCountry",
          "label": "Country *",
          "type": "text",
          "value": "United Arab Emirates",
          "required": true
        },
        {
          "name": "txtAddressName",
          "label": "Address Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine1",
          "label": "Address Line1 or P.O. Box Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine2",
          "label": "Address Line2",
          "type": "text",
          "value": "",
          "required": false
        },
        {
          "name": "txtEmirate",
          "label": "Emirate *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtPostalCode",
          "label": "Postal Code",
          "type": "text",
          "value": "",
          "required": false
        }
      ]
    },
    {
      "name": "remittance",
      "label": "Remittance Details",
      "group": [{
          "name": "supplierRemittanceEmail",
          "label": "Remittance Email *",
          "type": "email",
          "value": "",
          "required": true
        },
        {
          "name": "supplierAccountNumber",
          "label": "Account Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierRoutingNumber",
          "label": "Routing Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentMethod",
          "label": "Payment Method",
          "type": "select",
          "options": [{
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "ACH",
              "value": "ACH"
            },
            {
              "text": "Wire",
              "value": "Wire"
            },
            {
              "text": "Intl/ Sepa",
              "value": "Intl/ Sepa"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentCurrency",
          "label": "Payment Currency *",
          "type": "select",
          "options": [{
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "USD - US Dollar",
              "value": "USD - US Dollar"
            },
            {
              "text": "AED - UAE Dirham",
              "value": "AED - UAE Dirham"
            },
            {
              "text": "AUD - Australian Dollar",
              "value": "AUD - Australian Dollar"
            },
            {
              "text": "CAD - Canadian Dollar",
              "value": "CAD - Canadian Dollar"
            },
            {
              "text": "CNY - Yuan Renminbi",
              "value": "CNY - Yuan Renminbi"
            },
            {
              "text": "EUR - Euro",
              "value": "EUR - Euro"
            },
            {
              "text": "GBP - Pound Sterling",
              "value": "GBP - Pound Sterling"
            },
            {
              "text": "HKD - Hong Kong Dollar",
              "value": "HKD - Hong Kong Dollar"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentTerms",
          "label": "Payment Terms *",
          "type": "select",
          "options": [{
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Net 120",
              "value": "Net 120"
            },
            {
              "text": "Net 105",
              "value": "Net 105"
            },
            {
              "text": "Net 90",
              "value": "Net 90"
            },
            {
              "text": "Net 85",
              "value": "Net 85"
            },
            {
              "text": "Net 75",
              "value": "Net 75"
            },
            {
              "text": "Net 65",
              "value": "Net 65"
            },
            {
              "text": "Net 60",
              "value": "Net 60"
            },
            {
              "text": "Net 55",
              "value": "Net 55"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "termsDateBasis",
          "label": "Terms Date Basis *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    }
  ]
},
{
  "country": "Australia",
  "fields": [
    {
      "name": "common",
      "label": "Supplier Details",
      "group": [
        {
          "name": "supplierName",
          "label": "Supplier Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierOrgType",
          "label": "Tax Organization Type *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Individual/ Sole Proprietor",
              "value": "Individual/ Sole Proprietor"
            },
            {
              "text": "C Corporation",
              "value": "C Corporation"
            },
            {
              "text": "S Corporation",
              "value": "S Corporation"
            },
            {
              "text": "Partnership",
              "value": "Partnership"
            },
            {
              "text": "Trust / Estate",
              "value": "Trust / Estate"
            },
            {
              "text": "LLC - C Corporation",
              "value": "LLC - C Corporation"
            },
            {
              "text": "LLC - S Corporation",
              "value": "LLC - S Corporation"
            },
            {
              "text": "LLC - Partnership",
              "value": "LLC - Partnership"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "businessClassification",
          "label": "Business Classification *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierSsnNumber",
          "label": "Tax ID/SSN *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    },
    {
      "name": "address",
      "label": "Address Details",
      "group": [
        {
          "name": "txtSupplierCountry",
          "label": "Country *",
          "type": "text",
          "value": "Australia",
          "required": true
        },
        {
          "name": "txtAddressName",
          "label": "Address Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine1",
          "label": "Address Line1 *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine2",
          "label": "Address Line2",
          "type": "text",
          "value": "",
          "required": false
        },
        {
          "name": "txtAddressLine3",
          "label": "Address Line3",
          "type": "text",
          "value": "",
          "required": false
        },
        {
          "name": "txtCity",
          "label": "City *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtState",
          "label": "State",
          "type": "text",
          "value": "",
          "required": false
        },
        {
          "name": "txtPostalCode",
          "label": "Postal Code",
          "type": "text",
          "value": "",
          "required": false
        }
      ]
    },
    {
      "name": "remittance",
      "label": "Remittance Details",
      "group": [
        {
          "name": "supplierRemittanceEmail",
          "label": "Remittance Email *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierAccountNumber",
          "label": "Account Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierRoutingNumber",
          "label": "Routing Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentMethod",
          "label": "Payment Method *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "ACH",
              "value": "ACH"
            },
            {
              "text": "Wire",
              "value": "Wire"
            },
            {
              "text": "Intl/ Sepa",
              "value": "Intl/ Sepa"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentCurrency",
          "label": "Payment Currency *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "USD - US Dollar",
              "value": "USD - US Dollar"
            },
            {
              "text": "AED - UAE Dirham",
              "value": "AED - UAE Dirham"
            },
            {
              "text": "AUD - Australian Dollar",
              "value": "AUD - Australian Dollar"
            },
            {
              "text": "CAD - Canadian Dollar",
              "value": "CAD - Canadian Dollar"
            },
            {
              "text": "CNY - Yuan Renminbi",
              "value": "CNY - Yuan Renminbi"
            },
            {
              "text": "EUR - Euro",
              "value": "EUR - Euro"
            },
            {
              "text": "GBP - Pound Sterling",
              "value": "GBP - Pound Sterling"
            },
            {
              "text": "HKD - Hong Kong Dollar",
              "value": "HKD - Hong Kong Dollar"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentTerms",
          "label": "Payment Terms *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Net 120",
              "value": "Net 120"
            },
            {
              "text": "Net 105",
              "value": "Net 105"
            },
            {
              "text": "Net 90",
              "value": "Net 90"
            },
            {
              "text": "Net 85",
              "value": "Net 85"
            },
            {
              "text": "Net 75",
              "value": "Net 75"
            },
            {
              "text": "Net 65",
              "value": "Net 65"
            },
            {
              "text": "Net 60",
              "value": "Net 60"
            },
            {
              "text": "Net 55",
              "value": "Net 55"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "termsDateBasis",
          "label": "Terms Date Basis *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    }
  ]
},
{
  "country": "Austria",
  "fields": [
    {
      "name": "common",
      "label": "Supplier Details",
      "group": [
        {
          "name": "supplierName",
          "label": "Supplier Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierOrgType",
          "label": "Tax Organization Type *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Individual/ Sole Proprietor",
              "value": "Individual/ Sole Proprietor"
            },
            {
              "text": "C Corporation",
              "value": "C Corporation"
            },
            {
              "text": "S Corporation",
              "value": "S Corporation"
            },
            {
              "text": "Partnership",
              "value": "Partnership"
            },
            {
              "text": "Trust / Estate",
              "value": "Trust / Estate"
            },
            {
              "text": "LLC - C Corporation",
              "value": "LLC - C Corporation"
            },
            {
              "text": "LLC - S Corporation",
              "value": "LLC - S Corporation"
            },
            {
              "text": "LLC - Partnership",
              "value": "LLC - Partnership"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "businessClassification",
          "label": "Business Classification *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierSsnNumber",
          "label": "Tax ID/SSN *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    },
    {
      "name": "address",
      "label": "Address Details",
      "group": [
        {
          "name": "txtSupplierCountry",
          "label": "Country *",
          "type": "text",
          "value": "Austria",
          "required": true
        },
        {
          "name": "txtAddressName",
          "label": "Address Name *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine1",
          "label": "Address Line1 *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "txtAddressLine2",
          "label": "Address Line2",
          "type": "text",
          "value": "",
          "required": false
        },
        {
          "name": "txtPostalCode",
          "label": "Postal Code *",
          "type": "text",
          "value": "",
          "required": false
        }
        ,
        {
          "name": "txtCity",
          "label": "City *",
          "type": "text",
          "value": "",
          "required": true
        }   
      ]
    },
    {
      "name": "remittance",
      "label": "Remittance Details",
      "group": [
        {
          "name": "supplierRemittanceEmail",
          "label": "Remittance Email *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierAccountNumber",
          "label": "Account Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierRoutingNumber",
          "label": "Routing Number *",
          "type": "text",
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentMethod",
          "label": "Payment Method *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "ACH",
              "value": "ACH"
            },
            {
              "text": "Wire",
              "value": "Wire"
            },
            {
              "text": "Intl/ Sepa",
              "value": "Intl/ Sepa"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentCurrency",
          "label": "Payment Currency *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "USD - US Dollar",
              "value": "USD - US Dollar"
            },
            {
              "text": "AED - UAE Dirham",
              "value": "AED - UAE Dirham"
            },
            {
              "text": "AUD - Australian Dollar",
              "value": "AUD - Australian Dollar"
            },
            {
              "text": "CAD - Canadian Dollar",
              "value": "CAD - Canadian Dollar"
            },
            {
              "text": "CNY - Yuan Renminbi",
              "value": "CNY - Yuan Renminbi"
            },
            {
              "text": "EUR - Euro",
              "value": "EUR - Euro"
            },
            {
              "text": "GBP - Pound Sterling",
              "value": "GBP - Pound Sterling"
            },
            {
              "text": "HKD - Hong Kong Dollar",
              "value": "HKD - Hong Kong Dollar"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "supplierPaymentTerms",
          "label": "Payment Terms *",
          "type": "select",
          "options": [
            {
              "text": "-- Select --",
              "value": ""
            },
            {
              "text": "Net 120",
              "value": "Net 120"
            },
            {
              "text": "Net 105",
              "value": "Net 105"
            },
            {
              "text": "Net 90",
              "value": "Net 90"
            },
            {
              "text": "Net 85",
              "value": "Net 85"
            },
            {
              "text": "Net 75",
              "value": "Net 75"
            },
            {
              "text": "Net 65",
              "value": "Net 65"
            },
            {
              "text": "Net 60",
              "value": "Net 60"
            },
            {
              "text": "Net 55",
              "value": "Net 55"
            }
          ],
          "value": "",
          "required": true
        },
        {
          "name": "termsDateBasis",
          "label": "Terms Date Basis *",
          "type": "text",
          "value": "",
          "required": true
        }
      ]
    }
  ]
  }
 ]
}

here is my supplier component.ts code

export class SupplierComponent implements OnInit{
  countryName!: string;
  lstCountry!: Country[];

  filterForm!: FormGroup;
  filterFields!: any[];

 constructor(
    private route: ActivatedRoute,
    private countryService: CountryService,
    private fb: FormBuilder
   ) { }

 ngOnInit() {
    this.route.queryParams.subscribe(params => {
    this.countryName = params['country'];
 });

 console.log(this.countryName);
 let lstCountry = this.countryService.getCountryList(this.countryName);
 this.filterFields = JSON.parse(JSON.stringify(lstCountry));

  console.log(this.filterFields);   
}
onSubmit() {
  // if (this.form.valid) {
  // let value = this.form.value;
 //}
}

}

I am getting data on filterFields on the basis of country in this format fields:enter image description here

Here is my component.html code

 <div class="container">
   <div class="card border-info">
      <div class="card-header border-info">
         <h3>Supplier-Vendor</h3>
      </div>
    <div class="card-body">
    <div>
      <div class="row mb3">
        <div class="mb-3" *ngFor="let field of this.filterFields[0].fields">
        <h4>{{field.label}}</h4>
      </div>
      <div class="col-md-3" *ngFor="let fld of field.group">
        <label for="field.name" class="form-label">{{fld.label}}</label>
        <ng-container *ngIf="fld.type==='text'">
          <input type="text" [name]="fld.name" [required]="fld.required"   [value]="fld.value" class="form-control">
        </ng-container>
        <ng-container *ngIf="fld.type==='email'">
          <input type="email" [name]="fld.name" [required]="fld.required" [value]="fld.value" class="form-control">
        </ng-container>
        <ng-container *ngIf="fld.type==='select'">
          <select [name]="fld.name" [required]="fld.required" class="form-select">
            <option *ngFor="let option of fld.options" [value]="option.value">{{option.text}}</option>
          </select>
        </ng-container>
      </div>
    </div>
    <div class="row mb3">
      <button type="submit">SUBMIT</button>
    </div>
   </div>
 </div>
 </div>
</div>

My first *ngFor will create the form group then the next *ngFor will create the subsequent fields under a form group. I am getting errors in 2nd loop. Please anyone guide me on where I am doing wrong.

Thanks in advance.

0 Answers0