Tak więc próbuję stworzyć dyrektywę, która może manipulować FormControl.Angular2 v.2.3 - Mam dyrektywę dostęp do FormControl utworzony przez składnię formControlName
Wygląda na to, że jeśli użyję długiej składni do deklarowania formantów formularzy w szablonie, mogę przekazać sterowanie do dyrektywy, aby zrobić z nim coś jako bezpośrednie powiązanie @Input(); czyli: Z poniższego szablonu:
<form [formGroup]="myForm">
<input type="text" id="myText" [formControl]="myForm.controls['myText']" my-directive>
</form>
i następnego logiki komponent:
@Component({
// Properties go here.
})
class MyComponent {
myForm: FormGroup;
constructor(fb: FormBuilder) {
// Constructor logic...
}
ngOnInit() {
this.myForm = this.fb.group({
"myText": [""]
});
}
}
Dyrektywa wyglądałby następująco:
@Directive({
selector: "[my-directive]"
})
class MyDirective {
Input() formControl: FormControl;
}
Ale jeśli były przy użyciu składni formControlName w szablon zamiast:
<form [formGroup]="myForm">
<input type="text" id="myText" formControlName="myText" my-directive>
</form>
W jaki sposób odwołać się do (domyślnie?) FormControl w dyrektywie?
nie wiadomo, o co prosisz. Możesz zastosować dyrektywę do biernego wejścia z dowolną metodą wiązania szablonu, 'formControlName =" someName "' lub '[formControl] =" myForm.controls ['someName'] "' blisko, ponieważ mogę powiedzieć, że nie robi różnica. Jeśli zamieścisz swoją dyrektywę i dlaczego jej nie działa, to możesz uzyskać odpowiedź. – silentsod
O ile mi wiadomo, składnia formControlName nie umieszcza instancji FormControl na elemencie, więc bez wyraźnego powiązania nie wiem, jak uzyskać do niego dostęp. Zmieniłem to pytanie, mam nadzieję, że jest bardziej przejrzyste. –