Non interceptée (promesse): Erreur: Impossible de lire la propriété de undefined
Composante de prendre de l'utilisateur avec params
@Component({
selector: 'users',
providers: [UserService],
template: `
<p>{{user.id}}</p>
`
})
export class UserPageComponent implements OnInit {
constructor(
private userService: UserService,
private route: ActivatedRoute
) {};
ngOnInit(): void {
this.route.params.forEach((params: Params) => {
let id = +params['id'];
this.userService.getUser(id)
.then(user => {console.log(user.id);this.user = user})
});
}
Service :
@Injectable()
export class UserService {
private postUrl = 'http://127.0.0.1:8000/user-detail/'; //URL to web api
constructor(private http: Http) {
}
getUser(id: number): Promise<User> {
return this.http.get(this.postUrl+id)
.toPromise()
.then(response => response.json() as User)
.catch(this.handleError);
};
Et je reçois l'Erreur Uncaught (in promise): Error: Error in ./UserPageComponent class UserPageComponent - inline template:1:7 caused by: Cannot read property 'id' of undefined
Il semble que si le service de ne pas envoyer la promesse, bien qu'il le devrait.
Comment résoudre ce problème?
OriginalL'auteur Weit | 2016-09-15
Vous devez vous connecter pour publier un commentaire.
Il ressemble à votre composant n'a pas de valeur par défaut pour l'utilisateur, de sorte qu'il n'est pas défini lorsque le composant rendu essayer d'ajouter de la valeur par défaut
en fait, il sera préférable d'ajouter de la logique conditionnelle ici alors
il devrait fonctionner
OriginalL'auteur Ai_boy