Error cuando se usa setControl o patchValue en una matriz de forma angular

Por favor, ayude, he anidado la matriz de formularios, ver a continuación:

  this.form = this.formBuilder.group({
        projectTitle: ['', [Validators.required, Validators.maxLength(300)]],
        projectDescription: ['', [Validators.required, Validators.maxLength(300)]],
        funding: this.formBuilder.array([this._buildFundingItems()]),
    });

elthis._buildFundingItems() es como sigu

        private _buildFundingItems(): FormGroup {
          return this.formBuilder.group({
          items: ['', [Validators.required, Validators.pattern(this.regexValidation.shortWordRegex)]],,
          amount: ['', [Validators.required, Validators.pattern(this.regexValidation.amountTypeRegex)]],
        });
     }


    // after reloading the page, i get data from api and I tried setting the value as follows 
    this.form.setControl('funding', this.formBuilder.array(data.funding || []));

hacer lo anterior othis.form.setControl('funding', this.formBuilder.array(data.funding || [])); obtengo un error:Cannot find control with path: 'funding -> 0 -> amount' yCannot find control with path: 'funding -> 0 -> items'.

Antes de hacer lo siguiente a continuación, no recibía ningún error, pero al actualizar el formulario o (en los cambios de valor), el formularioray no se estaba actualizando.

     let length: number = data[0].funding.length;
     while (length-- > 0) {
         fundingSupport.push(this._buildFundingItems()); 
     }

     this.form.controls['funding'] = this.formBuilder.array([]);                   
     this.form.controls['funding'].patchValue(data.funding)

Vi el siguiente enlaceAngular 4 patchValue basado en el índice en FormArray por eso probé el primer enfoque.

Respuestas a la pregunta(3)

Su respuesta a la pregunta