我想从api输入用户名=== responseApi.user时获取数据,但我的代码从api获取所有数据用户。帮助我获取数据 以下是service.ts
中代码的一部分 @Injectable()
export class AuthenticationService {
private apiUrl = "http://5925399f21cf650011fddc7d.mockapi.io/api/users/";
private users: any[]
constructor(
private _router: Router, private _http: Http) { }
getList(): Observable<any[]> {
return this._http.get(this.apiUrl).map((response: Response) => response.json())
}
logout() {
localStorage.removeItem("user");
this._router.navigate(['Login']);
}
login(user) {
this._http.get(this.apiUrl).map((response: Response) => response.json()).subscribe((response: any) => {
this.users = response;
console.log(this.users)
console.log(user.user)
var authenticatedUser = this.users.find(u => u.user === user.user)
var authenticatedUser1 = this.users.find(u => u.password === user.password);
if (authenticatedUser && authenticatedUser1) {
localStorage.setItem('user', authenticatedUser)
this._router.navigate(['Home']);
return true;
}
return false;
}
)
}
答案 0 :(得分:0)
让您的服务返回一个可观察的。哟不能同步处理这个问题。 您的登录功能可能如下所示:
login(user) {
return this._http.get(this.apiUrl)
.map(response => response.json())
.map(users => users.find(u => u.user === user.user && u.password === user.password) // finds authenticatedUser
.filter(authenticatedUser => !!authenticatedUser) // filters null and undefined
.do(authenticatedUser => localStorage.setItem('user', authenticatedUser))
.do(() => this._router.navigate(['Home']));
}
在您的组件中订阅此方法。