目前我正面臨有關角度js 2中的登錄身份驗證的問題。 因爲我正在面對與以下代碼中的異步相關的問題。Angular 2同步Http服務
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { UserData } from './UserData';
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/toPromise'
@Injectable()
export class LoginserviceService {
userData = new UserData('','');
constructor(private http:Http) { }
callService(username:string,passwrod:string):boolean {
var flag : boolean;
(this.http.get('http://localhost:4200/data.json').
map(response => response.json())).subscribe(
data => this.userData = data ,
error => alert(),
() => {
flag = this.loginAuthentication(username,passwrod);
}
);
return flag;
}
loginAuthentication(username:string,passwrod:string):boolean{
if(username==this.userData.username && passwrod==this.userData.password){
return true;
}else{
return false;
}
}
當我在傳遞currect用戶名和密碼後執行此代碼時,它仍然返回false。
return flag
之前
flag = this.loginAuthentication(username,passwrod);
執行,最後我得到的結果爲假。
有沒有辦法,如果我可以使用同步方法或角2
低於承諾的任何解決方案組件代碼
import { Component, OnInit } from '@angular/core';
import { LoginserviceService } from '../loginservice.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
model:any={};
constructor(private service : LoginserviceService) {
}
ngOnInit() {
}
save() {
var flag = this.service.callService(this.model.userName,this.model.passWord);
if(flag==true)
{
console.log("login Successfully done-----------------------------")
this.model.success = "Login Successfully done";
}
}
}
能否請你澄清,其中被稱爲各功能?你可以添加你的組件代碼嗎? – Meir
我更新了代碼..請通過它..謝謝 – stackinfostack
@stackinfostack你可以調試你的'loginAuthentication'方法,看看有什麼數據值到達那裏。 – Pradeep