Angular Не удается прочитать свойство 'id' из неопределенного - PullRequest
0 голосов
/ 04 марта 2019

Я получаю список пользователей от остальных.Мне нужно перечислить этих пользователей в таблице данных (нг-премьер).Если щелкнуть строку, она приведет вас к нужному маршруту ([имя хоста] / users / edit / [userId] , который работает отлично!

Однако, если я обновлю страницу, которую получилошибка выше. Я хотел бы понять, почему это происходит.

user-management.service.ts:

// imports are here//
@Injectable({
  providedIn: 'root'
})
export class UserManagementService {

  selectedUser: {};
  private usersList: UserListDTO[] = [];

  constructor(private userResoService: UserResourceService) { }

  getUsers() {
    this.userResoService.findPrivilegedUsersUsingGET().subscribe(resp => {
      resp.forEach(user => this.usersList.push(user));
    });
  }

  getUsersList(): UserListDTO[] {
    return this.usersList;
  }
}

список пользователей.component.ts:

export class UsersListComponent implements OnInit {

  cols: any[];
  listOfUsers = [];
  constructor(private userService: UserManagementService,
    private router: Router,
    private route: ActivatedRoute) { }

  ngOnInit() {
    this.userService.getUsers();
    this.listOfUsers = this.userService.getUsersList();
    this.cols = [
      { field: 'firstName', header: 'First Name' },
      { field: 'lastName', header: 'Last Name' },
      { field: 'email', header: 'email' },
      { field: 'status', header: 'Status' }
    ];
  }

  private navigateToUserEdit() {
    const id = this.userService.selectedUser['id'];
    this.router.navigate(['edit', id], { relativeTo: this.route });
  }

  onRowSelect(event) {
    this.userService.selectedUser = event['data'];
    this.navigateToUserEdit();
  }

  deleteUser(user) {
    this.userService.selectedUser = user;
  }
}

edit-user.component.ts:

export class EditUserComponent implements OnInit {

  constructor(private userService: UserManagementService) { }

  userToEdit: {};
  ngOnInit() {
    this.userToEdit = this.userService.selectedUser;
  }
}

edit-user.component.html:

<p>
  {{userToEdit['id']}}
</p>

Я получаю сообщение об ошибке в последнем файле. Я думаю, что, возможно, его нет из-за некоторых перехватов жизненного цикла, но как я могу обойти эту проблему? Просветите менялюди ТАК, пожалуйста.

РЕДАКТИРОВАТЬ!: Хорошо, так! Если я проверю пользователя Obj после того, как я перешел, это нормально, но если я обновлю страницу userToEdit= undefined . Как мне вернуть этот Obj?

Или что мне сделать, чтобы получить его? Пожалуйста, не говорите мне использовать localalstorage. ty

1 Ответ

0 голосов
/ 04 марта 2019

Просто добавьте проверку с помощью ngIg, например:

edit-user.component.html:

<p *ngIf="userService.selectedUser | async">
  {{userToEdit['id']}}
</p>
...