Компонент, отображающий старые данные, затем переключающийся на свежие данные в Angular - PullRequest
0 голосов
/ 05 октября 2019

Есть 2 отдельных компонента. Первый - это мой собственный профиль, где я могу просмотреть свои данные и внести некоторые изменения, а второй - просмотреть профиль другого человека. Проблема в том, что когда вы нажимаете на URL профиля другого человека, он открывает правильный URL, но иногда показывает данные моего собственного профиля, а затем переключается на его / ее один, но иногда даже не переключается. Вот пользовательский компонент просмотра для просмотра профилей других людей.

Мы думаем, что проблема в этих функциях, и, как вы видите, она сначала проверяет ваш токен, чтобы увидеть, вошли ли вы в систему для доступа к данным других профилей. Мы используем сокет io для некоторых функций, поскольку он необходим для отображения статуса пользователя в сети.

Просмотр компонента пользователя ts

constructor(
    public nav: HeaderService,
    private usersService: UsersService,
    private route: ActivatedRoute,
    protected tokenService: TokenService) {
    this.socket = io(URL);
  }

  ngOnInit() {
    this.nav.show();
    this.user = this.tokenService.GetPayload();
    this.socket.emit('online', { room: 'global', user: this.user.username });
    this.socket.on('refreshPage', () => {
      this.GetUserData(this.name);
    });
    if (this.user) {
      this.GetUserById(this.user);
      this.route.params.subscribe(params => {
        this.name = params.name;
        this.GetUserData(this.name);
      });
    }
    this.socket.on('refreshPage', data => {
      this.route.params.subscribe(params => {
        this.name = params.name;
        this.GetUserData(this.name);
      });
    });
  }

  public ngAfterViewInit() {
    this.socket.on('usersOnline', data => {
      this.onlineusers = data;
    });
  }

  GetUserById(user) {
    this.usersService.GetUserById(user._id).subscribe(
      data => {
        this.user = data.result;
        this.imageId = data.result.picId;
        this.imageVersion = data.result.picVersion;
        this.images = data.result.images;
      },
      err => console.log(err)
    );
  }

  GetUserData(name) {
    this.usersService.GetUserByName(name).subscribe(
      data => {
        this.user = data.result;
        this.imageId = data.result.picId;
        this.imageVersion = data.result.picVersion;
        this.images = data.result.images;
      },
      err => console.log(err)
    );
  }

Я полагаю, что HTML-часть не требуется, поскольку раньше она работала нормально. Некоторые изменения были сделаны в вышеуказанных функциях, так что, похоже, проблема в этой части. Что не так и как это можно исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...