Есть 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-часть не требуется, поскольку раньше она работала нормально. Некоторые изменения были сделаны в вышеуказанных функциях, так что, похоже, проблема в этой части. Что не так и как это можно исправить?