2016-07-23 25 views
7

Làm cách nào tôi có thể thêm nhiều trình xác nhận hợp lệ vào một Nhóm biểu mẫu.Thêm nhiều trình xác nhận hợp lệ vào FormGroup trong angular2

FormControl có thể chấp nhận một loạt các trình xác nhận hợp lệ, tuy nhiên một FormGroup không thể. Có cách giải quyết nào khác ngoài việc tạo một trình xác thực tùy chỉnh không?

Tôi đang sử dụng rc4.

+1

Có thể thông qua Validators.compose? –

+1

Vâng đó là những gì tôi đang cố gắng để làm nhưng tôi nhận được một lỗi lạ trong quá trình biên dịch. Ví dụ: 'cho phép myGroup = this.formBuilder.group ({}, {validator: Validators.compose ([this.myCustomValidator (biến1, biến2)])});' Chỉ để cung cấp cho bạn ý tưởng về những gì myCustomValidator thực hiện, nó trả về một hàm validator 'return (group: FormGroup): {[s: string]: boolean} => {}' Lỗi tôi nhận được là: 'Đối số của kiểu '((nhóm: FormGroup) => {[s : string]: boolean;}) [] 'không thể gán cho tham số kiểu' ValidatorFn [] '.' – Maxim

+0

Btw trình xác nhận tùy chỉnh tự hoạt động tốt như sau: 'let myGroup = this.formBuilder.group ({}, {validator: this.myCustomValidator (biến1, biến2)}); ' – Maxim

Trả lời

14

Nhiều trình xác thực có thể được kết hợp thông qua Validators.compose().

Từ api reference:

soạn (xác nhận: ValidatorFn []): ValidatorFn

Soạn nhiều xác nhận vào một chức năng duy nhất mà trả về sự kết hợp của các bản đồ lỗi cá nhân.

+1

liên kết tài liệu bị hỏng, nhưng câu trả lời vẫn hoạt động – Manatax

+0

thx. Tôi đã cập nhật liên kết. –

+0

không hoạt động đối với tôi. '{ validator: Validators.compose ( [ this.validationFn1.bind (này), this.validationFn2.bind (this) ] ) } ' –

2

Thực ra, FormGroup đã chấp nhận mảng trình xác thực. Chỉ cần giao diện không được cập nhật. Truyền nó đến bất kỳ nào sẽ thực hiện. Ví dụ.

<any>[Validators.required, Validators.minlength(2)] 
+2

Chỉ cần thử nó, mặc dù nó không ném một lỗi chỉ một trong các trình xác nhận hợp lệ hoạt động vì một lý do nào đó. Bạn có sử dụng FormBuilder.group hoặc FormGroup đơn giản không? – Maxim

+0

Bạn có tìm thấy giải pháp cho điều này không? @Maxim –

+0

@PriteshAcharya Tôi vừa mới sử dụng Validators.compose(). Cũng nên nhớ rằng câu hỏi này đã được hỏi liên quan đến Angular RC4, nó bây giờ là trên Angular 4 hoặc một cái gì đó, tôi đã kể từ khi chuyển sang Vue. – Maxim

Các vấn đề liên quan