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']);