2017-04-13 1 views
1

Ich habe eine Profilkomponente, die den Benutzer über einen API-Aufruf erhält.Benutzer nicht verfügbar durch Eingabebindungen bei Aktualisierung Angular4

ProfileComponent

this.UserSubscription = this.auth.getUser().subscribe(res => { 
this.User = res; 
}) 

und ich übergeben Sie die Benutzerdaten an das Kind

<section class="user-achievements" *ngIf="User"> 
    <achievements [User]="User"></achievements> 
</section> 

AchievementsComponent

@Component({ 
    selector: 'achievements', 
    template: ` 
     <ng-container *ngIf="User"> 
     <div *ngFor="let achievement of Achievements"> 
      <h5>Achievment</h5> 
      <div>Name:</div> 
      <div>Progress:</div> 
     </div> 
     </ng-container>`, 
    styleUrls: ['./achievements.component.scss'] 
}) 
export class AchievementsComponent implements OnInit { 
    @Input() User; 
    Achievements; 
    constructor(
    private api: ApiClient, 
) {} 
    ngOnInit() { 
    console.log('this user', this.User); 
    this.api.get(`users/${this.User.id}/achievements`) 
     .subscribe(res => { 
     this.Achievements = res.content; 
     }); 
    } 

    } 

auf der Konsole neu zu laden zeigt meine api Anruf w it undefiniert als Benutzer. Wie kann man Daten in untergeordnete Komponenten laden?

Antwort

0

Geben Sie einen Typ an Benutzer.

Einige nützliche Code

@Input() user:string; 
@Input() user:any; 
@Inpuy() user: UserType 

class UserType { 
id:number 
name:string; 
} 

constructor(user:UserType) { 
this.user = user; 
} 
1

Sein Problem User war, war ein leeres Objekt so sein Zustand ein falsch positives warf.

+0

Danke für das Sitzen direkt neben mir. – Jason

Verwandte Themen