Angular2: Property 'controls' does not exist on type 'AbstractControl'. Error when accessing .control of an object within a formarray thru an index

You can use ['controls'] instead of .controls, as below:

(<FormArray>this.loanTypeForm.controls['frequency']).controls[index]['controls']['settings'].push(...)

But in order to simplify and provide more readability I'd suggest you to change it all to:

const control = this.loanTypeForm.get(`frequency.${index}.settings`) as FormArray;
control.push(...);

It seems that the loanTypeForm is treated as AbstractControl... so let's assure compiler that it is FormGroup

var group = this.loanTypeForm as FormGroup;
var array = group.controls['frequency'] as FormArray;
var control = group.controls[index]; // AbstractControl again.. could be casted as needed

and in case, that control is also group or form we just have to use assert (cast) as well

var control = group.controls[index] as FormGroup

And then we can easily continue

control.controls['settings']...

get() is the preferred way to access form controls

this.loanTypeForm.get(`frequency.${index}.settings`)