Vì vậy, tôi đang cố gắng thực hiện một chỉ thị có thể thao tác một FormControl. Có vẻ như nếu tôi sử dụng cú pháp dài để khai báo các điều khiển biểu mẫu trong khuôn mẫu thay vào đó, tôi có thể chuyển điều khiển đến một chỉ thị để thực hiện các công cụ với nó như một liên kết @Input() trực tiếp; ví dụ: Với các mẫu sau:Angular2 v.2.3 - Có một chỉ thị truy cập FormControl được tạo ra thông qua cú pháp formControlName
<form [formGroup]="myForm">
<input type="text" id="myText" [formControl]="myForm.controls['myText']" my-directive>
</form>
Và logic thành phần sau đây:
@Component({
// Properties go here.
})
class MyComponent {
myForm: FormGroup;
constructor(fb: FormBuilder) {
// Constructor logic...
}
ngOnInit() {
this.myForm = this.fb.group({
"myText": [""]
});
}
}
Chỉ thị sẽ trông như thế:
@Directive({
selector: "[my-directive]"
})
class MyDirective {
Input() formControl: FormControl;
}
Nhưng nếu tôi đang sử dụng cú pháp formControlName trong mẫu thay thế:
<form [formGroup]="myForm">
<input type="text" id="myText" formControlName="myText" my-directive>
</form>
Làm cách nào để tôi tham khảo FormControl (ngầm định?) Được thực hiện trong chỉ thị?
Đó là chưa rõ ràng những gì bạn đang yêu cầu. Bạn có thể áp dụng một chỉ thị cho một đầu vào phản ứng với một trong hai phương thức liên kết mẫu, 'formControlName =" someName "' hoặc '[formControl] =" myForm.controls ['someName'] "' gần như tôi có thể nói nó không làm cho một sự khác biệt. Nếu bạn đăng chỉ thị của bạn và tại sao nó không làm việc cho bạn thì có lẽ bạn có thể nhận được câu trả lời. – silentsod
Theo như tôi biết, cú pháp formControlName không đặt cá thể FormControl trên phần tử, vì vậy mà không có ràng buộc rõ ràng, tôi không biết cách truy cập nó. Tôi đã chỉnh sửa câu hỏi, hy vọng nó rõ ràng hơn. –