Wie man ionische reaktive Formen mit RxWeb erstellt

Wie man ionische reaktive Formen mit RxWeb erstellt

Quellknoten: 1783587

In diesem Artikel erfahren Sie, wie Sie ein reaktives Formular in einer plattformübergreifenden Anwendung erstellen, die einen auf dem RxWeb-Modell basierenden Ansatz zum Erstellen und Validieren des Formulars verwendet

Eine effiziente Möglichkeit, die Leistungsfähigkeit einer Unternehmensanwendung mithilfe eines gut gestalteten Formulars mit geeigneten Eingabevalidierungen zu erhöhen

Der folgende Fall beschreibt einen Anwendungsfall, bei dem die Benutzerregistrierung drei Felder „Vorname“, „Nachname“ und „E-Mail-Adresse“ enthält und alle diese Dinge für den Registrierungsprozess obligatorisch sind

Verwenden Sie einen eleganten Ansatz, um dieses Formular auf einfache Weise zu erstellen, ohne viel komplizierte Geschäftslogik zu schreiben, die in der Komponente enthalten ist

Dies kann erreicht werden mit @rxweb/reactive-form-validators das einen Ansatz zum Entwerfen eines modellbasierten Validierungsformulars hat und viele nützliche eingebaute Validierungen wie Unique, Choice, Compare usw.

Modellbasierte Formulare enthalten eine Modellklasse mit den initialisierten Eigenschaften unter Verwendung von Prüfern, die verwendet werden, um das Formular in der auf Modell, Komponente und HTML basierenden Architektur zu erstellen.
Weitere Informationen zu modellgesteuerten Formularen finden Sie unter Vereinfachte eckige reaktive Formen

Beginnen Sie mit der Installation des rxweb-Pakets aus dem npm mit dem folgenden Befehl:

npm i @rxweb/reactive-form-validators

Registrieren Sie die RxReactiveFormsModule Modul wie folgt im root(App)-Modul:

@NgModule({ declarations: [AppComponent,UserComponent], entryComponents: [], imports: [BrowserModule,RxReactiveFormsModule, CommonModule,FormsModule, ReactiveFormsModule, IonicModule.forRoot(), AppRoutingModule], providers: [ StatusBar, SplashScreen, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], bootstrap: [AppComponent]
})
export class AppModule {}

Beginnen wir mit der Implementierung, indem wir eine Modellklasse erstellen

Dieses Modell enthält eine Klasse Named User mit den erforderlichen Eigenschaften, in denen die Annotation von den rxweb-Validatoren verwendet wird, wobei das Modell eine oder mehrere Annotationen enthalten kann

import { required } from '@rxweb/reactive-form-validators'; export class User { @required() firstName: string; @required() lastName: string; @required() Email: string;
}

Unter Verwendung des obigen Modells wird die FormGroup unter Verwendung von gebunden formGroup Methode der RxFormBuilder die für die Bildung der userFormGroup verantwortlich ist, wie unten im Code erwähnt. Die FormGroup, die aus den Eigenschaften des Benutzermodells als FormControl zusammen mit den angewendeten Validierungen besteht.

import { Component, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { RxFormBuilder } from '@rxweb/reactive-form-validators';
import { User } from './user.model'; @Component({ selector: 'app-user', templateUrl: './user.component.html', styleUrls: ['./user.component.scss'],
})
export class UserComponent implements OnInit { userFormGroup : FormGroup constructor(private formBuilder: RxFormBuilder) { } ngOnInit() { this.userFormGroup = this.formBuilder.formGroup(User); } userRegistrationFormGroupSubmit() { console.log(this.userFormGroup.getRawValue()); }
} 

Da wir das ionische Framework verwenden, das für die Entwicklung hybrider plattformübergreifender Anwendungen verwendet wird, werden wir die ion-Tags verwenden, um es sowohl für Mobilgeräte als auch für das Web kompatibel zu machen.

Hier werden die Validierungsmeldungen von der in der App global konfigurierten Komponente während der Initialisierung der Anwendung wie folgt angezeigt

 initializeApp() { ReactiveFormConfig.set({"validationMessage":{"required":"This field is required."}}); this.platform.ready().then(() => { this.statusBar.styleDefault(); this.splashScreen.hide(); }); }

Der HTML-Code:

<ion-header> <ion-toolbar color="primary"> <ion-title> Ionic Rxweb Reactive Form Validators </ion-title> </ion-toolbar>
</ion-header>
<ion-content> <ion-card> <ion-card-content> <form [formGroup]="userFormGroup" novalidate (ngSubmit)="userFormGroupSubmit()"> <ion-list> <ion-item-divider color="primary">User Profile Info</ion-item-divider> <br> <ion-item-divider color="light"> <ion-label> General </ion-label> </ion-item-divider> <ion-item [class.has-error]="(userFormGroup.get('firstName').hasError('required') || userFormGroup.get('firstName').hasError('required')) && userFormGroup.get('firstName').touched"> <ion-label position="floating">FirstName *</ion-label> <ion-input type="text" formControlName="firstName"></ion-input> </ion-item> <ion-item lines="none" *ngIf="(userFormGroup.get('firstName').hasError('required') || userFormGroup.get('firstName').hasError('required')) && userFormGroup.get('firstName').touched"> <div class="error-message"> <small *ngIf="userFormGroup.get('firstName').hasError('required')"> {{ userFormGroup.controls.firstName.errors.required.message}}.<br /></small> </div> </ion-item> <ion-item [class.has-error]="(userFormGroup.get('lastName').hasError('required') || userFormGroup.get('lastName').hasError('required')) && userFormGroup.get('lastName').touched"> <ion-label position="floating">LastName *</ion-label> <ion-input type="text" formControlName="lastName"></ion-input> </ion-item> <ion-item lines="none" *ngIf="(userFormGroup.get('lastName').hasError('required') || userFormGroup.get('lastName').hasError('required')) && userFormGroup.get('lastName').touched"> <div class="error-message"> <small *ngIf="userFormGroup.get('lastName').hasError('required')"> {{ userFormGroup.controls.lastName.errors.required.message}}.<br /></small> </div> </ion-item> <ion-item [class.has-error]="(userFormGroup.get('Email').hasError('required') || userFormGroup.get('Email').hasError('required')) && userFormGroup.get('Email').touched"> <ion-label position="floating">Email *</ion-label> <ion-input type="email" formControlName="Email"></ion-input> </ion-item> <ion-item lines="none" *ngIf="(userFormGroup.get('Email').hasError('required') || userFormGroup.get('Email').hasError('required')) && userFormGroup.get('Email').touched"> <div class="error-message"> <small *ngIf="userFormGroup.get('Email').hasError('required')">{{ userFormGroup.controls['Email'].errors.required.message}}.<br /></small> </div> </ion-item> <ion-row no-padding justify-content-center> <ion-col col-auto text-right> <ion-button [disabled]='!userFormGroup.valid' type="submit" fill="clear" size="small" color="primary"> <ion-icon name='send' slot="start"></ion-icon> Send </ion-button> </ion-col> </ion-row> </ion-list> </form> </ion-card-content> </ion-card>
</ion-content> 

Das obige Bild zeigt die Ausgabe nach Abschluss des folgenden Prozesses

Alt Text

In diesem Artikel haben wir gelernt, ein modellbasiertes reaktives Formular zu erstellen und den modellgetriebenen Ansatz zusammen mit der Integration von** RxWeb**-Validierungen in eine ionische Anwendung zu verwenden.

Zeitstempel:

Mehr von Codementor eckig