Угловой сервис, есть несколько экземпляров вместо синглтона? - PullRequest
0 голосов
/ 27 января 2019

я понимаю по умолчанию сервисы в angular являются singleton.У меня есть страница события, на которой есть карточки, когда я нажимаю кнопку «Мне нравится», компонент события вызывает сервис (назовите его userService), который добавляет событие в массив, а затем консоль регистрирует массив, чтобы я мог проверить.Все работает хорошо, однако, когда я покидаю страницу события и возвращаюсь (используя маршрутизатор), массив снова становится пустым.Я прочитал немного о сервисном синглтоне в документации, но я не могу понять решение или проблему в этом отношении.

//this is the user.service.ts
@Injectable({
  providedIn: 'root'
})
export class UserService {
  userModel: UserModel;

  constructor() { 
    this.userModel= new UserModel();
  }
  //adding liked to an arary.
  likedEvents(event: EventModel){
    this.userModel.likedevent.push(event);
    console.log(this.userModel.likedevent);
  }
}

, и именно здесь я звоню

//this is event.component.ts
constructor(private userService:UserService, ) { }
  like(){
    alert('hi');
    this.event.title ='event Title';
    this.event.location ='event location';
    this.event.etablissement = 'event etablissemetn'
    this.event.type = 'happy hour'
    console.log(this.event);

    //here i call the service
    this.userService.likedEvents(this.event);
    this.userService.saveLikedEvents();
  }

Чего я не понимаю, так это того, почему у службы есть несколько экземпляров, во-вторых, как я могу сократить ее до одного экземпляра, я прочитал документацию, но я не совсем понимаю, так как я новичок в angular.

ОБНОВЛЕНИЕ: в навигационной панели я использовал href, я переключился на routerlink, и проблема решена.Однако при обновлении страницы все та же проблема.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

проблема была с навигационной панелью, которую я использовал href. Я исправил проблему, переключившись на routerlink

0 голосов
/ 27 января 2019

Если я правильно понял, вы хотите сохранить состояние массива, так почему бы вам просто не использовать "store"?Я считаю, что NGRX соответствует вашим потребностям!

Сервис работает нормально.Когда маршрут удален от вашего компонента, все переменные больше не доступны, что делает хранилище, делает копию в другом месте, чтобы при перезагрузке страницы вы могли получить предыдущее состояние.

...