Angular fromcontrol值不会以离子5/角度的反应形式更新
这里的问题是HTML和TS文件之间没有绑定。该值不会更新。我确实遵循了一个教程,我遵循了步骤,但它根本不起作用Angular fromcontrol值不会以离子5/角度的反应形式更新,angular,ionic-framework,angular-reactive-forms,ionic5,Angular,Ionic Framework,Angular Reactive Forms,Ionic5,这里的问题是HTML和TS文件之间没有绑定。该值不会更新。我确实遵循了一个教程,我遵循了步骤,但它根本不起作用 <form [formGroup]="form" (ngSubmit)="login()"> <input (keyup)="log()" formControlName="kk"> </form> 此代码不断返回{kk:},而不是更新其值。 我的代码怎么了
<form [formGroup]="form" (ngSubmit)="login()">
<input (keyup)="log()" formControlName="kk">
</form>
此代码不断返回{kk:},而不是更新其值。
我的代码怎么了?保罗
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { DateTime } from 'luxon';
@Component({
selector: 'app-register2',
templateUrl: './register2.page.html',
styleUrls: ['./register2.page.scss'],
})
export class Register2Page implements OnInit {
signUpForm: FormGroup;
mismatch: boolean
ageIsValid: boolean
constructor(private firebaseServ: FirebaseServiceService, public formBuilder: FormBuilder) {
this.signUpForm = this.formBuilder.group({
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required,Validators.minLength(6)]],
confirmPassword: ['', Validators.required],
nom: ['', Validators.required],
prenom: ['', Validators.required],
pseudo: ['', Validators.required],
naissance: ['', Validators.required]
}, { validators: [this.passwordMatchValidator, this.ageValidator] });
this.signUpForm.valueChanges.subscribe(obs => {
this.mismatch = this.signUpForm.getError('mismatch')
this.ageIsValid = this.signUpForm.getError('ageVerification')
})
}
ngOnInit() {
}
passwordMatchValidator(g: FormGroup) {
return g.get('password').value === g.get('confirmPassword').value ? null : { 'mismatch': true };
}
ageValidator(g: FormGroup) {
let naissance = DateTime.fromISO(g.get('naissance').value)
console.log(naissance.diffNow(['days', 'months', 'years']).as('years'))
return naissance.diffNow(['days', 'months', 'years']).as('years') <= -18 ? null : { 'ageVerification': true };
}
signUp() {
console(this.signUpForm.value)
}
}
从'@angular/forms'导入{FormGroup,FormBuilder,Validators};
从'luxon'导入{DateTime};
@组成部分({
选择器:“app-register2”,
templateUrl:'./register2.page.html',
样式URL:['./register2.page.scss'],
})
导出类Register2Page实现OnInit{
报名表格:FormGroup ;;
不匹配:布尔值
ageIsValid:boolean
构造函数(私有firebaseServ:FirebaseServiceService,公共formBuilder:formBuilder){
this.signUpForm=this.formBuilder.group({
电子邮件:['',[Validators.required,Validators.email]],
密码:[''[Validators.required,Validators.minLength(6)],
确认密码:['',验证器。必需],
名称:['',需要验证器],
prenom:['',验证器。必需],
伪:['',验证器。必需],
诞生:['',验证器。必填]
},{validators:[this.passwordMatchValidator,this.ageValidator]});
this.signUpForm.valueChanges.subscribe(obs=>{
this.mismatch=this.signUpForm.getError('mismatch'))
this.ageIsValid=this.signUpForm.getError('ageVerification')
})
}
恩戈尼尼特(){
}
passwordMatchValidator(g:FormGroup){
返回g.get('password')。value==g.get('confirmPassword')。value?null:{'mismatch':true};
}
ageValidator(g:FormGroup){
让naissance=DateTime.fromISO(g.get('naissance').value)
log(naissance.diffNow(['days','months','years')).as('years'))
返回naissance.diffNow(['days','month','years'])。作为('years'))
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { DateTime } from 'luxon';
@Component({
selector: 'app-register2',
templateUrl: './register2.page.html',
styleUrls: ['./register2.page.scss'],
})
export class Register2Page implements OnInit {
signUpForm: FormGroup;
mismatch: boolean
ageIsValid: boolean
constructor(private firebaseServ: FirebaseServiceService, public formBuilder: FormBuilder) {
this.signUpForm = this.formBuilder.group({
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required,Validators.minLength(6)]],
confirmPassword: ['', Validators.required],
nom: ['', Validators.required],
prenom: ['', Validators.required],
pseudo: ['', Validators.required],
naissance: ['', Validators.required]
}, { validators: [this.passwordMatchValidator, this.ageValidator] });
this.signUpForm.valueChanges.subscribe(obs => {
this.mismatch = this.signUpForm.getError('mismatch')
this.ageIsValid = this.signUpForm.getError('ageVerification')
})
}
ngOnInit() {
}
passwordMatchValidator(g: FormGroup) {
return g.get('password').value === g.get('confirmPassword').value ? null : { 'mismatch': true };
}
ageValidator(g: FormGroup) {
let naissance = DateTime.fromISO(g.get('naissance').value)
console.log(naissance.diffNow(['days', 'months', 'years']).as('years'))
return naissance.diffNow(['days', 'months', 'years']).as('years') <= -18 ? null : { 'ageVerification': true };
}
signUp() {
console(this.signUpForm.value)
}
}
<ion-header>
<ion-toolbar>
<ion-title>Enregistrez-vous pour accéder au site !</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<form [formGroup]="signUpForm" (ngSubmit)="signUp()">
<ion-list>
<ion-item>
<ion-label position="floating">Email</ion-label>
<ion-input type="email" formControlName="email"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Mot de Passe</ion-label>
<ion-input type="password" formControlName="password"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Confirmer le mot de Passe</ion-label>
<ion-input type="password" formControlName="confirmPassword"></ion-input>
</ion-item>
<ion-label color=danger *ngIf="(mismatch==true) && (signUpForm.get('confirmPassword').dirty)">
Le mot de passe et sa confirmation doivent coïncider.
</ion-label>
<ion-item>
<ion-label position="floating">Nom</ion-label>
<ion-input type="text" formControlName="nom"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Prénom</ion-label>
<ion-input type="text" formControlName="prenom"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Pseudo</ion-label>
<ion-input type="text" formControlName="pseudo"></ion-input>
</ion-item>
<ion-item>
<ion-label position="floating">Date de naissance</ion-label>
<ion-datetime display-format="DD MM YYYY" picker-format="DD MM YYYY" formControlName="naissance"></ion-datetime>
<ion-label color=danger *ngIf="(ageIsValid==true) && (signUpForm.get('naissance').dirty)">
Vous devez être majeur pour ouvrir un compte. Si vous êtes mineur, demandez à vos parents d'en ouvrir un pour
vous.
</ion-label>
</ion-item>
</ion-list>
<ion-button expand="full" fill="outline" type="submit" [disabled]="!signUpForm.valid">connexion</ion-button>
</form>
</ion-content>