Angular 2/4 no puede leer el objeto en initForm ()

Estoy creando un formulario de edición en angular y estoy confundido sobre el ciclo de vida del objeto que devuelve mi servidor de fondo. Cuando hago una llamada a mi servicio enngOnInit(), Obtengo datos viables. Cuando lo asigno a una variable de instancia, no está definido eninitForm() a pesar de que estoy llamandoinitForm() después de asignar esos datos.

Si observa las instrucciones de console.log, verá que el objeto funciona dentro dengOnInit() funcionar pero no eninitForm(). ¿Que me estoy perdiendo aqui? ¿Cómo hago que this.data sea accesible para todo el componente?

payee-edit.component.ts:

export class PayeeEditComponent implements OnInit, OnDestroy {
  public payee: Payee;
  id: number;
  payeeEditForm: FormGroup;
  data: Payee;
  subscription: Subscription;

  constructor(private router: Router, private route: ActivatedRoute, private payeeService: PayeeService) { }
  ngOnInit() {
    this.route.params
      .subscribe(
        (params: Params) => {
          this.id = +params['id'];
          this.subscription = this.payeeService.getPayee(this.id).subscribe(
            data => {
              this.data = data;
              console.log(this.data.company); //THIS WORKS
            }
          );
        }
      );
    this.initForm();

  }
  private initForm() {
    console.log(this.data.company); //THIS RETURNS UNDEFINED
    let payeeCompany = 'this.data.company';
    let payeeFirstName =  'this.data.first_name;'
    let payeeLastName = 'this.data.last_name;'
    let payeeNotes = 'this.data.notes;'

    this.payeeEditForm = new FormGroup({
      'company': new FormControl(payeeCompany),
      'first_name': new FormControl(payeeFirstName),
      'last_name': new FormControl(payeeLastName),
      'notes': new FormControl(payeeNotes)
    });
  }

  ngOnDestroy() {
    this.subscription.unsubscribe();
  }
}

payee.service.ts:

  getPayee(id: number) {
    return this.http.get(`http://localhost:3000/payees/${id}`)
    .map(data => data.json());
  }

Editar:
Si pongo la llamada a initForm () dentro de la suscripción, aparece un error en la carga de la página quejándome de que es necesario llamar a initForm (). No funciona hasta que active el evento que desencadena la llamada getPayee (). Ahora entiendo por qué tengo el comportamiento ahora, así que gracias por el enlace. Solo necesito un poco de ayuda con mi caso de uso específico

Respuestas a la pregunta(2)

Su respuesta a la pregunta