Ваша проблема в том, что вы initMethod()
извлекаете результат асинхронно.
Поэтому, когда вы достигаете строки с if(this.events[0].start == ...
, нет никакой гарантии, что данные о событии были получены из службы.
Исправление состоит в том, чтобы переместить ваш чек в часть подписки вашего метода init (который выполняется, как только наблюдаемое излучает свое значение), или позволить методу init вернуть наблюдаемое, на которое вы можете подписаться, и выполнить вашу проверкувнутри этой подписки.
Решение 1 - Перемещение чека в подписку
ngOnInit() {
this.initMethod();
}
initMethod() {
this.service
.getEmployees()
.subscribe(
(listBooks) => {
this.books = listBooks;
this.events = this.books.map((book) => {
return {
start: new Date(book.date_from_og),
end: new Date(book.date_to_og),
type: ""+book.type,
title: "" + book.device + "",
color: colors.blue,
actions: this.actions,
resizable: {
beforeStart: false,
afterEnd: false
},
draggable: false
}
if(this.events[0].start == this.books[0].date_from_og) {
this.dialog.closeAll();
}
});
},
(err) => console.log(err)
);
}
Решение 2 - Разрешение initMethod вернуть Observable
ngOnInit() {
this.initMethod().subscribe(() => {
if(this.events[0].start == this.books[0].date_from_og) {
this.dialog.closeAll();
}
});
}
initMethod() {
return this.service
.getEmployees()
.pipe(tap(
(listBooks) => {
this.books = listBooks;
this.events = this.books.map((book) => {
return {
start: new Date(book.date_from_og),
end: new Date(book.date_to_og),
type: ""+book.type,
title: "" + book.device + "",
color: colors.blue,
actions: this.actions,
resizable: {
beforeStart: false,
afterEnd: false
},
draggable: false
}
});
}))
}