Angular 2 - Formgruppenkomponente

8

Ich versuche, ein datengesteuertes Formular zu erstellen, bei dem die Eingaben von einer anderen Komponente kommen:

%Vor%

Die Komponente app-form-group sieht ungefähr so ​​aus:

%Vor%

Das Problem ist, dass formControlName eine formGroup Direktive benötigt, daher bekomme ich diesen Fehler:

%Vor%

Gibt es eine Möglichkeit, dieses Problem zu umgehen?

    
Alexandru Pufan 06.10.2016, 11:45
quelle

3 Antworten

4

Sie sollten Ihre FormGroup [formGroup]="signupForm" in app-form-group Component verwenden. Sie können diesen Code verwenden:

%Vor%     
Saeed Py 06.10.2016, 14:12
quelle
3

Sie können eine @Input-Eigenschaft verwenden, um die Referenz in die Unterkomponente zu bekommen:

app-form-group.ts:

%Vor%

app.html:

%Vor%

app-form-group.html:

%Vor%

Detaillierte Informationen finden Sie in diesem Tutorial: Ссылка

    
Bernhard Hochgatterer 11.01.2017 12:06
quelle
1

Wenn Sie eine benutzerdefinierte Komponente für die Datenbindung an einen individuellen Wert implementieren möchten, ist die korrekte Winkelmethode die Vorgehensweise, bei der die übergeordnete Ansicht entweder [formControl] oder [formControlName] angibt.

%Vor%

In Ihrem Kindsteuerelement müssen Sie Folgendes tun:

Fügen Sie zuerst den folgenden Anbieter zu Ihrer @Component -Deklaration hinzu, damit Angular weiß, dass Ihre Komponente mit [formControlName] / [formControl]

arbeiten kann %Vor%

Die Klasse Ihrer untergeordneten Komponente muss dann die Schnittstelle ControlValueAccessor implementieren. Dieses sollte ein voll funktionsfähiges Beispiel sein, wenn nicht, lassen Sie es mich wissen und ich werde den Code ändern, ich tippte es direkt in den Browser.

%Vor%

Ihre app-form-group Vorlage würde ungefähr so ​​aussehen

%Vor%
  1. Fügen Sie [formGroup]="signupForm" zu jeder Ihrer app-form-group -Instanzen in Ihrer Hauptansicht hinzu
  2. Implementiere OnInit in deinem app-form-group -Steuerelement.
  3. Fügen Sie private controlContainer: ControlContainer dem Konstruktor Ihrer app-form-group -Komponente hinzu, damit Angular es injiziert
  4. Fügen Sie public form: FormGroup; -Eigenschaft zu Ihrer app-form-group -Komponente hinzu.
  5. Fügen Sie in ngOnInit den folgenden Code hinzu

    this.form = this.containerControl.control;

In Ihrer app-form-group Vorlage würden Sie [formGroup] wie folgt hinzufügen

%Vor%

Dies ist die Methode, die den geringsten Code erfordert. Diese Methode wird empfohlen, wenn Sie zusammengesetzte Steuerelemente einbetten möchten, die mehrere Datenelemente bearbeiten (z. B. eine Adresse).

Von diesem Blog - & gt; Ссылка

    
Peter Morris 11.08.2017 08:54
quelle

Tags und Links