2016-10-20 3 views
0

Я начинаю изучать угловое2, и у меня есть проблема. Существует некоторый класс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); 
} 

Я могу видеть свойство «пользователь» в консоли, но не «ErrorMessage». http://screen.mindklab.com/incoming/82c673e18ae8f89d7c6175a57c33.png

Если я изменю console.log (this) на console.log (this.user), я получаю «undefined» в консоли. Почему класс «собственная собственность» не изменяется? Из-за этого я не могу использовать «пользователь» в шаблоне

это класс обслуживания:

@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); 
} 
} 

служба возвращает необходимые данные (это показано в консоли), но это не написано в собственность

+0

добавить код обслуживания пожалуйста. – Sefa

+0

не имеет отношения к вашему вопросу, но вы не должны делать вызов службы внутри своих конструкторов. – vidalsasoon

+0

Я пытался сделать вызов из ngOnInit() {}. Результат тот же –

ответ

0

Я думаю, что вам не хватает обработки ошибок в вашем сервисе.

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); 
    } 
+0

ok. Но ошибки нет. Метод getUser возвращает правое наблюдаемое –

Смежные вопросы