【发布时间】:2016-10-20 12:55:56
【问题描述】:
我开始学习 angular2,但遇到了问题。 有一些类
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);
}
我可以在控制台中看到属性“user”,但看不到“errorMessage”。 http://screen.mindklab.com/incoming/82c673e18ae8f89d7c6175a57c33.png
如果我将 console.log(this) 更改为 console.log(this.user),我会在控制台中得到“未定义”。为什么班级的自己的财产没有改变? 因此,我不能在模板中使用“用户”
这是服务类:
@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);
}
}
服务返回必要的数据(显示在控制台中),但未写入属性
【问题讨论】:
-
请添加服务代码。
-
与您的问题并不真正相关,但您不应该从构造函数内部进行服务调用。
-
我尝试从 ngOnInit(){} 拨打电话。结果是一样的
-
我明白了!我的服务需要一些时间才能返回数据。而当模板尝试使用属性时,它还不存在。有什么方法可以说等待 ngOnInit 方法完成?
-
如果有人感兴趣,我找到了解决这个问题的方法。我用 *ngIf="user" 包装了整个模板。如果有人知道更好的方法,请写在这里
标签: angular