2017-04-24 84 views
5

other responses'da belirtildiği gibi, bir Angular2 uygulamasının ilk rutinleri ngOnInit() yönteminde başlatılmalı ve kurucuya özellikle bağımlılık enjeksiyonu için bırakılmalıdır.Neden ngOnInit yerine yapıcıda Angular2 reaktif formumu oluşturmalıyım?

Ancak, Takip ettiğim Reactive Forms tutorial yılında, formun başlatma yapıcı içinde:

export class HeroDetailComponent3 { 
    heroForm: FormGroup; // <--- heroForm is of type FormGroup 

    constructor(private fb: FormBuilder) { // <--- inject FormBuilder 
    this.createForm(); 
    } 

    createForm() { 
    this.heroForm = this.fb.group({ 
     name: '', // <--- the FormControl called "name" 
    }); 
    } 
} 

gerçekten anlamlı bir fark var mı yoksa sadece önemsiz bir sorundur?

+0

açık. –

cevap

1

Yapıcıdaki createForm yönteminin ngOninit'ten önce çalıştırılması ve formunuzun oluşturulmasının hemen ardından formunuzun kullanıma hazır olması nedeniyle bunu kabul ediyorum. Eğer form bileşeni @Input() s (doğrudan veya dolaylı) bağlı değerlerle başlatıldı istiyorsanız aslında gerekli olacak şekilde

0

, kötü uygulama değildir ngOnInit() içinde formGroup başlatılıyor. Örneğin

: Bir tekrar PR açısal belgeleri proje

class SignInFormComponent { 
    @Input() currentLogin: string; 
    formGroup: FormGroup; 

    constructor() { 
    // this.currentLogin is not known yet here 
    } 

    ngOnInit(): void { 
    this.formGroup = this._fb.group({ 
     loginEmail: [this.currentLogin, Validators.email], 
     loginPassword: [''], 
    }); 
    } 
}