Javascript Angular 8/Firebase:使用电子邮件和密码创建用户时,如何设置displayName?
在读了这么多的帖子和空洞的(或不是?)解决方案后,我想最好的办法是自己发帖子。因此,我的目标只是获取用户的显示名,以便在帖子列表或其他任何内容中,作者身份不会因为uid而显得难看。。。 以下是我发现与问题相关的内容: 注册反应表单,稍后在onInit上调用:Javascript Angular 8/Firebase:使用电子邮件和密码创建用户时,如何设置displayName?,javascript,angular,firebase,firebase-authentication,Javascript,Angular,Firebase,Firebase Authentication,在读了这么多的帖子和空洞的(或不是?)解决方案后,我想最好的办法是自己发帖子。因此,我的目标只是获取用户的显示名,以便在帖子列表或其他任何内容中,作者身份不会因为uid而显得难看。。。 以下是我发现与问题相关的内容: 注册反应表单,稍后在onInit上调用: createForm() { this.registerForm = this.fb.group( { name: ['', Validators.required], email: ["
createForm() {
this.registerForm = this.fb.group(
{
name: ['', Validators.required],
email: ["", [Validators.required]],
password: [null, [Validators.required, Validators.minLength(5)]],
retype: ["", Validators.required]
},
{
validator: PasswordValidators.passwordsShouldMatch
}
);
}
提交方法:
onSubmit() {
if (this.registerForm.invalid) return;
this.registered = true
this.authService.registerUser(this.email.value, this.password.value).then(data=>{
console.log(data)
})
}
调用uid和register方法的authService:
constructor( private afAuth: AngularFireAuth, private router: Router) {
this.afAuth.authState.subscribe(user=>{
this.userId = user.uid;
})
}
registerUser(email:string, password:string) {
return this.afAuth.auth.createUserWithEmailAndPassword(email, password)
.then((result) => {
this.router.navigate(['/login']);
console.log(result.user)
}).catch((error) => {
window.alert(error.message)
})
}
记录此行时this.afAuth.authState.subscribe(用户=>{
this.userId=user.uid;
,实际上记录了用户,我可以看到整个对象和显示名,但是由于register方法只接受两个参数,email和pass,我如何解决这个问题?我尝试过处理updateprofile,但遇到了一个错误…有什么解决方案吗?如果您想设置disp设置用户帐户的名称,则在使用createUserWithEmailAndPassword创建帐户时无法执行此操作。您必须对返回的用户对象执行后续调用
result.user.updateProfile({
displayName: ...
})
.then(...)
.catch(...)
显然,您必须在调用
registerUser()
谢谢@Doug时传递名称,但是您显示的代码..它在什么函数中?registerUser?在您登录用户的createUserWithEmailAndPassword的promise回调中。