【发布时间】:2018-03-23 12:10:41
【问题描述】:
我的 firebase 注册组件遇到了一些问题。几天前它工作顺利,但后来我决定休息几天(可怕的错误),现在我的注册表单不起作用,我收到了这个错误:
{code: "auth/argument-error", message: "signInWithEmailAndPassword failed: First argument "email" must be a valid string.", ngDebugContext: DebugContext_, ngErrorLogger: ƒ}
注册表单很大,所以我尽力使它尽可能短。
html:
<form [formGroup]="myForm" (ngSubmit)="onSignup()">
<div formGroupName="emailPass" class="form-group">
<md-input-container class="col-md-6 md-icon-left">
<input formControlName="email" mdInput #email type="email" name="email" class="form-control" placeholder="Email">
</md-input-container>
<md-input-container class="col-md-6 md-icon-left no-margin-bottom">
<input mdInput formControlName="password" type="password" class="form-control" id="password" name="password" placeholder="Contraseña">
</md-input-container>
<md-input-container class="col-md-6 md-icon-left no-margin-bottom">
<input mdInput type="password" formControlName="confirmPassword" class="form-control" name="password" placeholder="Confirmar Contraseña">
</md-input-container>
<button type="submit" [disabled]="!myForm.get('emailPass').valid" md-raised-button color="primary">Siguiente</button>
</div>
</form>
signup.component.ts
import { Component, OnInit } from "@angular/core";
import { FormBuilder, FormGroup, Validators, FormControl, AbstractControl } from "@angular/forms";
import { AuthService } from '../../services/auth.service';
import { RutValidator } from 'ng2-rut';
import { EmailValidator } from '../../shared/validators/email';
import { PasswordValidator } from "../../shared/validators/password-validator";
import { IsEqualPassword } from "../../shared/validators/equal-password";
@Component({
selector: 'my-page-sign-up',
styleUrls: ['./sign-up.component.scss'],
templateUrl: './sign-up.component.html'
})
export class PageSignUpComponent implements OnInit {
myForm: FormGroup;
constructor(private fb: FormBuilder,
private authService: AuthService,
rv: RutValidator) {
this.myForm = this.fb.group({
emailPass: this.fb.group({
email: ['', Validators.compose([Validators.required,
EmailValidator.isValid])],
password: ['', Validators.compose([Validators.required, PasswordValidator])],
confirmPassword: ['', Validators.required]
}, { validator: IsEqualPassword },
),
});
}
onSignup() {
this.authService.signupUser(this.myForm.value);
}
ngOnInit(): any {}
}
auth.service.ts
import { Injectable } from '@angular/core';
import { User } from "./user";
import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
import { Router } from '@angular/router';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
@Injectable()
export class AuthService {
user: Observable<firebase.User>;
constructor(private firebaseAuth: AngularFireAuth,
private router: Router,
private afdb: AngularFireDatabase)
{
this.user = firebaseAuth.authState;
};
signupUser(user: User) {
firebase.auth().createUserWithEmailAndPassword(user.email, user.password).catch(function(error) {
// Handle Errors here.
var errorMessage = error.message;
// ...
}).then(value => {
console.log('Success!', value);
let userDetails = {
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
}
this.afdb.list('users').update(value.uid, userDetails);
this.router.navigate(['/app/recibirpago']);
})
.catch(err => {
console.log('Something went wrong:',err.message);
});
};
}
我认为我收到这些错误是因为 firebase 模块最近更新了,但在再次检查文档后,我发现我的问题没有解决方案。
感谢您的帮助!!
【问题讨论】:
-
它看起来像一个 Firebase 错误而不是 Angular
-
您可以记录电子邮件第一个参数以确保它是有效的电子邮件字符串吗?
标签: angular firebase authentication firebase-authentication