[英]Angular2. Can't set class property
I begin learning of angular2 and I have a problem. 我开始学习angular2,但遇到了问题。 There is some class 有一些课
export class UserComponent {
user: User;
errorMessage: string;
constructor(
private usersService: UsersService,
private route: ActivatedRoute
) {
let id = +route.params._value.id;
this.usersService.getUser(id).subscribe(
user => this.user = user,
error => this.errorMessage = <any>error
);
console.log(this);
}
I can see property "user" in console, but not "errorMessage". 我可以在控制台中看到属性“ user”,但看不到“ errorMessage”。 http://screen.mindklab.com/incoming/82c673e18ae8f89d7c6175a57c33.png http://screen.mindklab.com/incoming/82c673e18ae8f89d7c6175a57c33.png
If I change console.log(this) to console.log(this.user) I get "undefined" in console. 如果我将console.log(this)更改为console.log(this.user),我在控制台中会得到“未定义”。 Why class' own property doesn't changed? 为什么班级的自有财产没有变化? Because of this I can't use "user" in template 因此,我无法在模板中使用“用户”
this is service class: 这是服务类:
@Injectable()
export class UsersService {
private usersUrl = 'http://gye.hz/component/chart/fixscripts?task=';
constructor(private http: Http) {}
getUsers(): Observable<User[]> {
return this.http
.get(this.usersUrl+'getUsers')
.map((r: Response) => r.json().data);
}
getUser(id: number): Observable<User> {
return this.http
.get(this.usersUrl+'getUser&id='+id)
.map((r: Response) => r.json().data);
}
saveUser(user: User): Observable<User> {
let body = JSON.stringify(user);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http
.post(this.usersUrl+'saveUser', body, options)
.map((r: Response) => r.json().data);
}
}
Service returns necessary data (it is shown in console), but it isn't written to property 服务返回必要的数据(在控制台中显示),但未将其写入属性
I think you're missing some error handling in your service. 我认为您在服务中缺少一些错误处理。
getUser(id: number): Observable<User> {
return this.http
.get(this.usersUrl+'getUser&id='+id)
.map((r: Response) => r.json().data)
.catch(error => this.onError(error)); <!-- NEW -->
}
onError(error: any) {
//Log error?
let errMsg = error.message || 'Server error';
console.error(errMsg);
return Observable.throw(errMsg);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.