Краткий ответ. Используйте:
<div *ngIf="formArr.get('countries').value=='usa'">
Но позвольте мне кое-что объяснить:
Во-первых, Дэвид НЕ использует ни [ngModel], ни (ngModelChange) в вводе, который вы используете formControlName. Если вы хотите получить доступ к значению formControl, используйте методы для получения значения formControl.
Ну как доступ к этому значению? в общем, мы используем способ
nameMyform.get('nameOfControl').value
Когда вы используете массив Form, вы можете сделать что-то вроде
myForm.get('formArray').at(i).get('countries')
Ну, на самом деле вы не можете сделать это, если вы делаете сборку ng --prod выдает ошибку. Когда мы используем FormArray, используем метод получения для получения значения массива
get myArray()
{
return this.myForm.get('formArray') as FormArray
}
Вы перебираете
<div formArrayName="formArray">
<div *ngFor="let formArr of myArray.controls; let i = index"
[formGroupName]="i" style="margin-bottom: 10px;" >
....
</div>
<div >
(см. «div» Я повторяю, это "div" formGroup, а не div formArrayName =
И использовать
myArray.at(i).get('countries').value
Но вы можете использовать переменную итерации, да, ваша переменная formArr из "let formArr of ..." является формой группы, поэтому вы можете использовать
formArr.get('countries').value
Ну, не так быстро, вы используете <option *ngFor="let c of countries" [ngValue]="c">
. Это означает, что значение вашего myArray .at (i) .get ('страны') - это "целый" объект "c" - я хочу сказать, что вы хотите сказать [ngValue]="c.name"
или "c .ISOName" или что-то подобное.