When getting data from a subscription, my data is not being binded to my local variable. I have two components, and a service. The parent component invokes a method from a service to do to an http get, the get includes a user object which I need to bind. However, when console.logging the object outside the subscription it appears undefined. Here is my code: Parent Component: selectedUser : User; onUserRowSelect(event): void { this.router.navigate(['../childComponent'], { relativeTo: this.route }); this.formService.getUser(event.data.USER_ID).subscribe(result => { console.log(result); // <-- Object is logged properly. this.selectedUser = result; // Assigning the local @Input variable to the result }); } Child Component: @Input() selectedUser : User; ngOnInit() { console.log(this.selectedUser); // Returns undefined. } Service with Http: getUser(id: number): Observable<User> { const _url = 'myURL/getuser/' + id; const headers = new Headers(); headers.append('X-User', sessionStorage.getItem('username')); headers.append('X-Token', sessionStorage.getItem('token')); headers.append('X-AccessTime', sessionStorage.getItem('AccessTime')); headers.append('Content-Type', 'application/json'); const options = new RequestOptions({ headers: headers }); return this.http.get(_url, options) .map(response => { const responseAsObject = response.json(); this.myUser = responseAsObject; return responseAsObject; }); } HTML Form Templates: Child template <div id="top"> <nb-card> <nb-card-header>Update User</nb-card-header> <nb-card-body header="Update User"> <div class='row'> <div class='col-md-6'> <form [formGroup]="complexForm" (ngSubmit)="submitForm(complexForm.value)"> <div class="form-group" [ngClass]="{'has-error':!complexForm.controls['username'].valid}"> <label>Username</label> <input [(ngModel)]="username" class="form-control" id="username" type="text" [formControl]="complexForm.controls['username']"> </div> <div class="form-group" [ngClass]="{'has-error':!complexForm.controls['group_id'].valid}"> <label>Group ID</label> <div class="row" *ngIf="roles.length"> <div class="col-md-4"> <select [(ngModel)]="selectedGroup" name="group_id" (change)="onChange($event)" class="form-control" [formControl]="complexForm.controls['group_id']" data-width='200px'> <option [ngValue]="role.GROUP_ID" *ngFor="let role of roles"> {{role.NAME}} </option> </select> </div> </div> </div> <div class="form-group"> <label>First Name</label> <input [(ngModel)]="fname" class="form-control" type="text" [formControl]="complexForm.controls['fname']"> </div> <div class="form-group"> <label>User ID</label> <input [(ngModel)]="ID" class="form-control" type="text" [formControl]="complexForm.controls['USER_ID']"> </div> <div class="form-group"> <label>Last Name</label> <input [(ngModel)]="lname" class="form-control" type="text" [formControl]="complexForm.controls['lname']"> </div> <div class="form-group"> <label>Organization</label> <input [(ngModel)]="organization" class="form-control" type="text" [formControl]="complexForm.controls['organization']"> </div> <div class="form-group"> <label>Phone</label> <input [(ngModel)]="phone" class="form-control" type="text" [formControl]="complexForm.controls['phone']"> </div> <div class="form-group"> <label>Creation Date</label> <input [(ngModel)]="creationDate" class="form-control" type="text" [formControl]="complexForm.controls['creation_date']"> </div> <div class="form-group"> <label>Last Login</label> <input [(ngModel)]="lastLogin" class="form-control" type="text" [formControl]="complexForm.controls['last_login']"> </div> <div class="form-group" [ngClass]="{'has-error':!complexForm.controls['status'].valid}"> <label>Status</label> <div class="row" *ngIf="statuses.length"> <div class="col-md-6"> <select [(ngModel)]="selectedStatus" name="stasus" (change)="onChange($event)" class="form-control" [formControl]="complexForm.controls['status']" data-width='500px'> <option [ngValue]="status.STATUS" *ngFor="let status of statuses"> {{status.STATUS_DESC}} </option> </select> </div> </div> </div> <div class="form-group"> <label>Logged In</label> <input [(ngModel)]="loggedIn" class="form-control" type="text" [formControl]="complexForm.controls['logged_in']"> </div> <div class="form-group"> <label>Password Bad Tries</label> <input [(ngModel)]="pwdBadTries" class="form-control" type="text" [formControl]="complexForm.controls['pwd_badtries']"> </div> <div class="form-group"> <label>Title</label> <input [(ngModel)]="title" class="form-control" type="text" [formControl]="complexForm.controls['title']"> </div> <div class="form-group"> <label>Email</label> <input [(ngModel)]="email" class="form-control" type="text" [formControl]="complexForm.controls['email']"> </div> <div class="form-group"> <label>User Expiry in Days</label> <input [(ngModel)]="userExpiryInDays" class="form-control" type="text" [formControl]="complexForm.controls['user_expiry_in_days']"> </div> <div class="form-group" [ngClass]="{'has-error':!complexForm.controls['restricted_ip'].valid}"> <label>Restricted IP</label> <input [(ngModel)]="restrictedIp" class="form-control" type="text" [formControl]="complexForm.controls['restricted_ip']"> <div *ngIf="complexForm.controls['restricted_ip'].hasError('pattern') && complexForm.controls['restricted_ip'].touched" class="alert alert-danger">Not a valid IP Address.</div> </div> <div class="form-group"> <label>Password Expiry Date</label> <input [(ngModel)]="pwdExpdate" class="form-control" type="text" [formControl]="complexForm.controls['pwd_expdate']"> </div> <div class="form-group"> <button type="submit" value="update" [disabled]="!complexForm.valid" class="btn btn-success">Update User</button> </div> </form> <div> <button type="submit" value="delete" class="btn btn-success" (click)="confirmDelete()">Delete User</button> </div> <br/> <div> <button type="submit" value="delete" class="btn btn-success" (click)="getNewPassword()">Set Password</button> </div> </div> </div> </nb-card-body> </nb-card> Parent HTML: <div> <div class="row-md-6"> <nb-card title="List of Users"> <ng2-smart-table [settings]="settings" [source]="source" (userRowSelect)="onUserRowSelect($event)"></ng2-smart-table> </nb-card> </div> </div> the parent component is a list of users, the child component is a form menu to edit the selected user, since I want to pass user to the child component to edit So my issue lies with selectedUser appearing undefined in the child component even after adding @input decorator to the variable. Continue reading...