我是Angular和Typescript的新手。我有一个关于将引用传递到订阅函数的问题。所以我有下面显示的代码...如您所见,我正在尝试从可观察对象分配用户值,但是似乎函数没有看到该引用。我看到了其他一些stackoverflow问题,但是我不知道如何将其转换为纯箭头函数,也不知道如何获取ProfileComponent的实例来成功赋值。
对不起,我对这些东西还很陌生,所以如果有人可以向我解释如何正确处理这种东西,我将非常高兴。除了可观察之外,还有其他选择吗?如果您只有一个要从GET方法中获取一项,那么以可观察的方式获取它不是没有用吗?
请帮助。
import { Component, OnInit } from '@angular/core';
import { UserService } from '../_services';
import { User } from '../_models';
import { userInfo } from 'os';
@Component({
selector: 'app-profile',
templateUrl: './profile.component.html',
styleUrls: ['./profile.component.css']
})
export class ProfileComponent implements OnInit {
user: User;
constructor(userService: UserService) {
this.user = new User();
const obs$ = userService.getAll().subscribe({
next(val) {
console.log('Current object: ', val, ' user ', this.user);
this.user.userId = val[0].userId;
this.user.username = val[0].username;
},
error(msg) { console.log('Error Object: ', msg); }
}
);
/*
this.user.userId = obs[0].id;
this.user.username = obs[0].username;
this.user.password = obs[0].password;
*/
}
ngOnInit() {
}
}
答案 0 :(得分:1)
似乎this
的上下文丢失了。而是尝试使用箭头函数,如下所示:
const obs$ = userService.getAll().subscribe((val) => {
console.log('Current object: ', val, ' user ', this.user);
this.user.userId = val[0].userId;
this.user.username = val[0].username;
},
(msg) => { console.log('Error Object: ', msg); });
这将确保保留this
的上下文