Angular Действия с массивом в combineLatest

Вообщем есть компонент вот часть его кода:

ngOnInit() {
  this.user_id = JSON.parse(this.localStorageService.getItem('user')).id;
  this.dialog_id = this.activateRoute.snapshot.params['id'];

  combineLatest([this.api.getDialogs(), this.api.getDialogsTemplates(this.user_id)]).pipe(untilDestroyed(this))
    .subscribe(([dialogs, templates]) => {
    this.dialogs = dialogs;

    templates.forEach((template) => {
      this.templates.push({
        id: template.id,
        user_id: template.user_id,
        name: template.name,
        variants: template.message.split('|'),
        message: ''
      });
    });

    if (window.innerWidth < 770 && this.dialog !== null) {
      this.smallWidth = true;
    }

    if (this.dialog_id !== null && this.dialogs !== null) {
      this.openMessage(this.dialog_id);
    }
    this.isLoaded = true;
  });
}

openMessage(id) {
  this.id = id;
  this.api.updateDialogs(this.id).pipe(untilDestroyed(this)).subscribe(() => {});

  const idx = this.dialogs.findIndex(item => item.id === id);

  this.dialogs[idx].view = 0;
  this.dialogs[idx].dialogsMessages.forEach((message) => {
    message.time_time = moment.unix(message.time_message).format('DD.MM.YYYY HH:mm:ss');
  });
  this.dialog = this.dialogs[idx];

  if (window.innerWidth < 770) {
    this.smallWidth = true;
  }

  this.templates.forEach((template) => {
    template.message = template.variants.sort(this.compareRandom)[0]
  });
}

Кароче если не передовать this.dialog_id, компонент работает нормально. Но если передовать this.dialog_id то вот это const idx = this.dialogs.findIndex(item => item.id === id); отработывает неправильно выдаёт -1. Нужна ваша помощь.


Ответы (1 шт):

Автор решения: Moonwolf45

Всё нашел проблему, очень странно конечно, что даже с явно определёнными типами произошла такая беда:

this.dialog_id = parseInt(this.activateRoute.snapshot.params['id']);
→ Ссылка