2017-04-24 13 views
5

जैसा कि other responses में इंगित किया गया है, एक कोणीय 2 अनुप्रयोग की आरंभिक दिनचर्या ngOnInit() विधि में लॉन्च की जानी चाहिए, विशेष रूप से निर्भरता इंजेक्शन के लिए निर्माता को छोड़कर।मुझे ngOnInit के बजाय कन्स्ट्रक्टर में अपना कोणीय 2 प्रतिक्रियाशील रूप क्यों बनाना चाहिए?

हालांकि, Reactive Forms tutorial कि मैं अनुसरण कर रहा है, फार्म की आरंभीकरण निर्माता में है:

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" 
    }); 
    } 
} 

वहाँ वास्तव में एक महत्वपूर्ण अंतर है या यह सिर्फ एक छोटी सी समस्या नहीं है?

+0

खुला एक जनसंपर्क फिर कोणीय प्रलेखन परियोजना। –

उत्तर

1

मैं इसे विश्वास करता हूं क्योंकि कन्स्ट्रक्टर में createForm विधि ngOninit से पहले निष्पादित हो जाएगी और आपका फॉर्म जल्द ही आपके घटक के रूप में उपयोग के लिए तैयार हो जाएगा।

0

ngOnInit() में formGroup शुरु कर रहा है एक बुरी प्रथा नहीं है, के रूप में यह वास्तव में अगर आप चाहते हैं आपके प्रपत्र मानों (प्रत्यक्ष या परोक्ष) अपने घटक @Input() रों से निर्भर साथ प्रारंभ करने के लिए आवश्यक हो जाएगा।

उदाहरण के लिए:

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: [''], 
    }); 
    } 
} 
संबंधित मुद्दे