2017-04-24 24 views
5

Như được nêu trong other responses, các thói quen ban đầu của ứng dụng Angular2 sẽ được khởi chạy trong phương thức ngOnInit(), để lại hàm tạo cụ thể cho việc tiêm phụ thuộc.Tại sao tôi nên tạo biểu mẫu phản kháng Angular2 trong hàm tạo thay vì ngOnInit?

Tuy nhiên, trong Reactive Forms tutorial rằng tôi dưới đây, khởi tạo của form là trong các nhà xây dựng:

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

Có thực sự là một sự khác biệt đáng kể hoặc là nó chỉ là một vấn đề nhỏ?

+0

mở một PR một lần nữa dự án tài liệu góc. –

Trả lời

1

Tôi tin rằng vì phương thức createForm trong hàm dựng sẽ thực thi trước ngOninit và biểu mẫu của bạn sẽ sẵn sàng để sử dụng ngay khi thành phần của bạn được hiển thị.

0

Khởi tạo formGroup trong ngOnInit() không phải là thực tế không đúng, vì nó sẽ thực sự được yêu cầu nếu bạn muốn biểu mẫu của mình được khởi tạo với giá trị phụ thuộc (trực tiếp hoặc gián tiếp) từ thành phần @Input() s.

Ví dụ:

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: [''], 
    }); 
    } 
} 
Các vấn đề liên quan