2016-10-04 2 views
0

Ошибка в консоли Chrome: ИСКЛЮЧЕНИЕ: Ошибка: нечистота (в обещании): TypeError: невозможно прочитать свойство 'applicationName' из null.Заполнение формы группы с нулевым значением и

Модель: экспорта класс BasicInfoModel {

applicationName: string; 
    localDirectoryPath: string; 
} 

контроллер излучающих данные в родительский компонент, родительский компонент там сохраняются услуги.

Контроллер:

import { Component, Output, OnInit, EventEmitter} from '@angular/core'; 
import { FormGroup, FormControl, REACTIVE_FORM_DIRECTIVES, Validators,    
FormBuilder, FormArray}from "@angular/forms"; 
import { Observable } from "rxjs/Rx"; 
import { BasicInfoModel } from '../basicinfomodel'; 
import { BasicInfoService} from '../app.dev.basicinfo.service'; 

@Component({ 
    selector: 'basic-info', 
    templateUrl: './basicInfo.html', 
    styleUrls: ['../../ComponentStyles.css'], 
    directives: [REACTIVE_FORM_DIRECTIVES] 
}) 

export class BASIC_INFOComponent implements OnInit { 

observableBasic: BasicInfoModel; 
basicInfoForm: FormGroup; 

@Output() basicInfoUpdate = new EventEmitter<JSON>(); 
@Output() basicInfoFormValid = new EventEmitter<Boolean>(); 

constructor(private formBuilder: FormBuilder, private BasicInfoService:  
BasicInfoService) { } 

onSubmit() { 
    debugger; 
    this.observableBasic; 
    this.basicInfoUpdate.emit(this.basicInfoForm.value); 
} 

ngOnInit() { 

    this.basicInfoForm = new FormGroup({ 
     'applicationName': new FormControl('', Validators.required), 
     'localDirectoryPath': new FormControl('', Validators.required) 
    }); 

    this.basicInfoForm.valueChanges.subscribe(data => console.log('form 
    changes', data)); 
    this.BasicInfoService.currentBasicInfo 
     .subscribe(
     (basic: BasicInfoModel) => { 
      this.observableBasic = basic; 
     }); 

    (<FormGroup>this.basicInfoForm).setValue(this.observableBasic, { onlySelf: true }); 
} 

} 

Что я хочу достичь:

  1. Когда я построить мой код, я хочу, чтобы мой formGroup должны быть заполнены с нулевыми значениями.
  2. когда я заполнил данные и сохранил их в behaviourSubject в моих службах, последний, когда я пересматриваю страницу, моя группа форм должна быть синхронизирована с службами передачи данных.

ответ

0

Измененный Controler, добавив: (! This.observableBasic = не определено)

ngOnInit() { 
    this.basicInfoForm = new FormGroup({ 
     'applicationName': new FormControl('', Validators.required), 
     'localDirectoryPath': new FormControl('', Validators.required) 
    }); 

    this.BasicInfoService.currentBasicInfo 
     .subscribe((basic: BasicInfoModel) => { this.observableBasic = basic; }); 

    if (this.observableBasic != undefined) { 
     (<FormGroup>this.basicInfoForm).setValue(this.observableBasic, { onlySelf: true }); 
    }  

    this.basicInfoForm.valueChanges.subscribe(data => console.log('form changes', data)); 
} 
Смежные вопросы