angular - Angular 6从服务返回值
问题描述
我正在学习角度,我在从服务中获取数据时遇到问题。这是我的代码第一个存储数据的简单模型。
//user.model.ts
export class UserModel {
first_name: string;
last_name: string;
deserialize(input: any): this {
Object.assign(this, input);
return this;
}
}
身份验证服务。我需要将数据保存到 UserModel 以从所有代码中获取此数据。
//auth.service.ts
export class AuthService implements OnDestroy {
private user: UserModel;
constructor(private http: HttpClient) {}
getUser() Observable<UserModel> {
return Observable.of(this.user);
}
login(login: string, password: string) {
const data = {'login': login, 'password': password};
return this.http.post(`login/`, data)
.map(token => {
this.user = new UserModel().deserialize(token);
});
}
}
//login.component.ts
// ......
this.authService.login(username, password).subscribe(
data => {
this.router.navigate(['/home']);
},
);
并在登录和主页后
//home.component.ts
export class HomeComponent implements OnInit {
user: any;
constructor(private authService: AuthService) { }
ngOnInit() {
this.authService.getUser().subscribe(data =>{
this.user = data;
console.log(this.user);
});
}
}
我有:
TypeError: Cannot read property 'subscribe' of undefined
如何更正从服务中获取保存的数据?
编辑 我发现了一个错误
getUser() Observable<UserModel> {
return Observable.of(this.user);
}
// should be
getUser(): Observable<UserModel> {
return Observable.of(this.user);
}
但现在我的控制台输出中有未定义(来自 HomeComponent)
编辑 2
看起来登录方法中的地图内的用户初始化没有初始化我的变量。有谁知道为什么?
login(login: string, password: string) {
const data = {'login': login, 'password': password};
return this.http.post(`login/`, data)
.map(token => {
this.user = new UserModel().deserialize(token);
});
}
解决方案
推荐阅读
- python - 模块“tsfresh.feature_extraction.feature_calculators”没有属性
- php - 尝试创建自定义 WordPress 用户注册页面时遇到 PHP 警告
- c# - 使用 C# 从 Active Directory 中获取图像并使用角度显示它
- c++ - 简单的 C++ 循环占用整个 RAM
- javascript - WebRTC - 如何将 MediaStream 添加到现有的 RTCPeerConnection(没有附加任何 MediaStream)
- package - 跨 Swift 包共享 Package.swift 配置
- excel - Excel 公式问题 比较部分字段
- javascript - Javascript Debounce 没有从 vue 组件中清除它的队列
- php - 如何使用 get 将 2 个变量发送到第二个 PHP 页面
- python - 如何使用多线程加速 Python 导入?