因此,基本上,我试图与事件Emitter进行组件通信。 但我不知道为什么会收到这个错误
Type '{ result: UserCredential; }' is not assignable to type 'LoginResponse'. Types of property 'result' are
incompatible. Type 'UserCredential' has no properties in common with type '{ email?: string; uid?: string;
}'.
我的登录表单组件代码为
import { Component,EventEmitter,Output } from '@angular/core';
import { NavController} from 'ionic-angular';
import { AngularFireAuth} from 'angularfire2/auth';
import { Account } from '../../model/account/account.interface';
import { LoginResponse} from '../../model/login/login.response.interface';
@Component({
selector: 'app-login-form',
templateUrl: 'login-form.components.html'
})
export class LoginFormComponent {
account = {} as Account;
@Output() loginStatus : EventEmitter<LoginResponse>;
constructor(private afAuth:AngularFireAuth, private navCtrl:NavController)
{
this.loginStatus = new EventEmitter<LoginResponse>();
}
async login(){
try {
const result : LoginResponse = { result : await
this.afAuth.auth.signInWithEmailAndPassword(
this.account.email,this.account.password)
}
this.loginStatus.emit(result);
} catch (e) {
console.error(e);
const error : LoginResponse = {
error : e
}
this.loginStatus.emit(error);
}}}
在我的登录响应界面文件的即时消息导出界面中,该界面将包含用户电子邮件和用户ID,并且登录响应界面文件的代码为
export interface LoginResponse{
result?: {
email?: string;
uid?: string;
}
error?: {
code?:string;
message?: string;
}
}
答案 0 :(得分:1)
Here是this.afAuth.auth.signInWithEmailAndPassword
实际返回的类型(在您等待诺言之后):
type UserCredential = {
additionalUserInfo?: firebase.auth.AdditionalUserInfo | null;
credential: firebase.auth.AuthCredential | null;
operationType?: string | null;
user: firebase.User | null;
};
这与LoginResponse.result
的类型不匹配:
{
email?: string;
uid?: string;
}
答案 1 :(得分:0)
try {
let res = await this.afAuth.auth.signInWithEmailAndPassword(this.account.email, this.account.password);
const result: LoginResponse = {
result: {email: res.user.email, uid: res.user.uid}
}
只需尝试将其更改为此代码,它就会起作用。我遇到同样的问题。