看,我做了一个接收用户CPF的代码,然后将其发送到服务器,它检查CPF是否有效,如果有效,则在控制台中打印用户名,如果不是,则打印“ Not Found”,这是代码:
cpf.component.html
<form class="ion-padding-horizontal">
<ion-list>
<ion-item>
<ion-label position="stacked" color="primary">Insira seu CPF</ion-label>
<ion-input name="cpf" type="text" #cpf></ion-input>
</ion-item>
<ion-row class="ion-padding-top">
<ion-col>
<ion-button type="button" expand="block" (click)="validarCPF(cpf.value)">
Login
</ion-button>
</ion-col>
</ion-row>
</ion-list>
</form>
cpf.component.ts
import { ValidateService } from '../validate.service'
export class CpfComponent implements OnInit {
constructor(private _validateService: ValidateService) {}
validarCPF(cpf) {
this._validateService.validar(cpf)
}
}
validate.service.ts
import { environment } from '../../../environments/environment'
interface respostaAluno {
ALUNO_ACADEMIA: any;
}
export class ValidateService {
constructor(private http: HttpClient) { }
alunoInfo: any = {
registros: "",
idAcademia: "",
nomeAcademia: "",
idAluno: "",
idAlunoAcademia: "",
nomeAluno: "",
alunoSenha: ""
};
validar(cpf) {
this.receberAluno(cpf)
if(this.alunoInfo.registros > 0) {
console.log(this.alunoInfo.nomeAluno)
} else {
console.log("Not Found")
}
}
receberAluno(cpf) {
this.http
.get<respostaAluno>( environment.url + environment.token + "&Metodo=alunoCheckCPF&AlunoCPF=" + cpf)
.subscribe(response => {
this.alunoInfo.registros = response.ALUNO_ACADEMIA.Registros
this.alunoInfo.idAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].id_academia
this.alunoInfo.nomeAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].academia_nome
this.alunoInfo.idAluno = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_main
this.alunoInfo.idAlunoAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_academia
this.alunoInfo.nomeAluno = response.ALUNO_ACADEMIA.AlunoDados[0].nome_aluno
});
}
}
但是我在响应延迟方面存在问题。我输入了有效的CPF,应该在控制台中进行打印:
“法拉利亚·桑托斯(Aline Faria Santos)”
但是印
“未找到”
因为函数validatear()接收用户的信息,但是当它运行if()来检查用户是否存在时,注册信息的数量尚未到达要检查的变量,因此当用户不返回时返回给我存在,仅当我第二次单击按钮以打印名称时,该如何解决?
我该如何对已将值分配给变量的函数仅运行IF?请帮我!!
一个简单的解决方案是将以下内容放入其中,
if(this.alunoInfo.registros > 0) {
console.log(this.alunoInfo.nomeAluno)
} else {
console.log("Not Found")
}
内subscribe
的receberAluno(cpf)
方法。
既然你打了validar(cpf)
,那确实又打receberAluno(cpf)
了。因此,最好receberAluno(cpf)
仅在从API接收数据时直接调用和检查数据。如下图所示:
receberAluno(cpf) {
this.http
.get<respostaAluno>( environment.url + environment.token + "&Metodo=alunoCheckCPF&AlunoCPF=" + cpf)
.subscribe(response => {
this.alunoInfo.registros = response.ALUNO_ACADEMIA.Registros
this.alunoInfo.idAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].id_academia
this.alunoInfo.nomeAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].academia_nome
this.alunoInfo.idAluno = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_main
this.alunoInfo.idAlunoAcademia = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_academia
this.alunoInfo.nomeAluno = response.ALUNO_ACADEMIA.AlunoDados[0].nome_aluno
if(this.alunoInfo.registros > 0) {
console.log(this.alunoInfo.nomeAluno)
}
else
{
console.log("Not Found")
}
});
}
cpf.component.ts
这里直接打电话receberAluno(cpf)
而不是打电话validar(cpf)
validarCPF(cpf) {
this._validateService.receberAluno(cpf)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句