I'm working with Angular 8 and FormGroup, I got a little issue I can't fix, in my webpage I'm trying to render values inside a <select> based on another <select>.
Here's the JSON I recieve : JSON response
I'm trying to render "currencies" based on "ListPricelist"
Here's my HTML :
<div class="flex1 pl10">
<select formControlName="pricelist" class="form-control" [ngClass]="{'is-invalid': submitted &&
f.pricelist.errors}">
<option value selected="selected">Select a pricelist</option>
<option name="pricelist_id" ngClass="pricelist_id" *ngFor="let p of filter.ListPricelist; let i = index" id="pricelist_id" >{{i}}{{p.label}}</option>
</select>
<div *ngIf="submitted && f.pricelist.errors" class="invalid-feedback">
<div *ngIf="f.pricelist.errors.required">Pricelist is required</div>
</div>
<select formControlName="currency" class="form-control">
<option value selected="selected">Select a currency</option>
<option [value]="currency_id" *ngFor="let c of registerForm.value.pricelist.currencies" id="currency_id">{{c.code}}</option>
</select>
</div>
But in my page it doesn't render and I can only select List Pricelist
Don't hesitate to tell me if you need the TypeScript file and thank's for the help in advance
EDIT : Here's my TS file
import {Component, Injectable, OnInit} from '@angular/core';
import {Form, FormBuilder, ReactiveFormsModule, FormGroup, Validators} from
"@angular/forms";
import {HttpClient} from '@angular/common/http';
import {ActivatedRoute, Router} from '@angular/router';
@Component({
selector: 'app-project',
templateUrl: './project.component.html',
styleUrls: ['./project.component.scss'],
})
@Injectable({
providedIn: 'root'
})
export class ProjectComponent implements OnInit {
ngOnInit() {
this.requiredFields()
}
filter = JSON.parse(window.localStorage.getItem('filters'));
filterCurrency = this.filter;
currencies: Array<any>;
params: {
ListPricelist: Array<{
currencies: Array<{
id: number;
code: string;
}>
}>;
};
get f() {
return this.registerForm.controls;}
requiredFields(){
this.registerForm = this.formBuilder.group(
{
name: ['',[Validators.required]],
country: ['',[Validators.required]],
pricelist_id: [''],
pricelist: ['',[Validators.required]],
currency: ['',[Validators.required]],
status: ['',[Validators.required]],
tarif: ['',[Validators.required]],
hauteur: ['',[Validators.required]],
supp: ['',[Validators.required]],
mainO: ['',[Validators.required]]
}
)
}
constructor(private httpClient: HttpClient,
private activatedRoute: ActivatedRoute,
private formBuilder: FormBuilder,
private router: Router,
){}
}
export interface getResponse {
ListPricelist: Array<{
currencies: Array<{
id: number;
code: string;
}>
}>;
}