我正在登录页面上工作。我想要做的是我在课程validateLogin()
和submit()
中有两个功能。点击登录按钮后,我成功提交,我可以获得用户名和密码。
我试图在我的提交函数中调用我的validateLogin函数但是我无法调用它我的sublime文本在validateLogin上显示错误,我的Chrome浏览器中没有出现任何错误。
import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';
import {FormBuilder,Validators} from "@angular/common";
@Component({
templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
public loginForm: any;
public commentOnTimeOut: any;
constructor(private navCtrl: NavController, public form:FormBuilder) {
this.loginForm = this.form.group({
"email":["",Validators.required],
"password":["",Validators.required]
})
}
validateLogin(cb){
window.setTimeout( () => {
if (this.loginForm.value.email == 'admin' && this.loginForm.value.password == 'admin123') {
console.log("invoking If part");
cb('valid User');
}
else {
console.log("invoking elsePart");
cb('Invalid User');
}
}, 3000);
}
submit(){
console.log(this.loginForm.value);
console.log(this.loginForm.value.email);
console.log(this.loginForm.value.password);
validateLogin(this.loginForm.value.email, this.loginForm.value.password, (response) => {
console.log(response);
this.commentOnTimeOut = response;
})
this.commentOnTimeOut = "Validating User";
console.log(this.commentOnTimeOut);
}
}
如何在提交函数中调用我的函数validateLogin?
这是demo plunker,效果很好
错误:
在我的控制台中获取http://localhost:8100/build/js/app.bundle.js。
在我的服务中,我收到类似
的错误TypeScript error: /home/panini/AutoSparParts/app/pages/home/home.ts(40,5): Error TS2663: Cannot find name 'validateLogin'. Did you mean the instance member 'this.validateLogin'?
以上错误我正在调用任何帮助
答案 0 :(得分:3)
由于您正在使用class
的实例,如果要引用该实例中的属性或方法,则必须添加{{1在属性或方法名称之前。
在我的服务中,我收到类似TypeScript错误的错误: /home/panini/AutoSparParts/app/pages/home/home.ts(40,5):错误TS2663: 找不到名称' validateLogin'。 您的意思是实例成员吗? ' this.validateLogin'吗
那是因为如果不将this.
添加到this
方法,则会查找具有该名称的全局方法,因为它不是在那里,抛出一个错误。因此,您的validateLogin
方法应为:
submit
<强>更新强>
是的,我试试这个。我得到像TypeScript错误的错误: /home/panini/AutoSparParts/app/pages/home/home.ts(40,5):错误TS2346: 提供的参数与呼叫目标的任何签名都不匹配。
这是因为您的submit(){
console.log(this.loginForm.value);
console.log(this.loginForm.value.email);
console.log(this.loginForm.value.password);
this.validateLogin(this.loginForm.value.email, this.loginForm.value.password, (response) => {
console.log(response);
this.commentOnTimeOut = response;
})
this.commentOnTimeOut = "Validating User";
console.log(this.commentOnTimeOut);
}
方法只需要一个参数(validateLogin
参数)并且您正在发送三个参数(电子邮件,密码和回调)。
尝试修改这样的行:
cb
答案 1 :(得分:2)
要访问班级成员,您需要在任何班级成员之前使用this.
,在您的情况下尝试此
this.validateLogin(this.loginForm.value.email, this.loginForm.value.password, (response) => {
console.log(response);
this.commentOnTimeOut = response;
})