Угловой 6 При инициализации компонента нет данных от подписки, при загрузке второго компонента все в порядке, при каждом следующем странно - PullRequest
0 голосов
/ 09 декабря 2018

В этой ссылке есть код с частью моего приложения: stackblitz.com / edit / angular-wfpjb8 .Это шоу, в чем моя проблема.(обратите внимание на console.log в консоли)

КРАТКОЕ ОПИСАНИЕ: В Angular 6 у меня есть поиск компонентов, где у меня есть ввод.Когда я нажимаю ENTER, получаю некоторые данные из БД в сервисе httpService:

keyDownFunction(event){
    if(event.keyCode == 13) {
        this.httpService.searchPoint().subscribe(
        points => {
          this.mapService.setSearchPoints(points);
          this.router.navigate(['/home/search/']);
        });
    }
}

Из бэкэнда я получаю некоторые данные в формате: [{}, {}, {}, {} ...] иэти данные я отправляю через mapService в компонент ResultComponent, где я хочу отобразить эти данные.mapService:

setSearchPoints(points){
    this.pointList.next(points);
}
getSearchPoints(){
    return this.pointList.asObservable();
}

Компонент Results Компонента, где я подписываюсь на данные из сервиса и хочу отображать данные.

export class ResultsSearchComponent {
    points;
    constructor(private mapService: MapService) {
    this.mapService.getSearchPoints().subscribe((points) => {
        console.log('1: ', points);
        this.points = points;
    });
    console.log('2: ', points);
}

ПРОБЛЕМА:

  1. Когда я впервые устанавливаю данные из бэкэнда, console.log 1 не выполняется (поэтому мои данные из бэкэнда не будут записываться), а console.log 2 выполняется не определено - я хочу немедленно просмотреть данные из БД
  2. Когда я второй раз устанавливаю данные из бэкэнда (когда существует компонент ResultsComponent) console.log 1 записывает правильные данные из бэкэнда, а console.log 2 не выполняется.(все работает хорошо)
  3. Когда я закрываю этот компонент и устанавливаю данные из бэкэнда еще раз, console.log 1 записывает правильные данные (но это выполнение выполняется из последнего установленного набора), но 2 не выполняется.
  4. Когда я закрываю этот компонент еще раз, console.log 1 пишет дважды, когда я закрываю еще раз, выполняю три раза, четыре раза, пять раз и так далее ...

Я действительно не понимаю, почему это работает так, потому что, на мой взгляд, оно должно работать правильно. Скажите, пожалуйста, что я делаю неправильно.

1 Ответ

0 голосов
/ 10 декабря 2018

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

В любом случае, у меня есть рабочий пример для вас на stackblitz .Я пробовал именовать методы и компоненты / сервисы, чтобы они напоминали то, что вы упомянули.

Дайте мне знать, помогло ли это.

...