Есть ли способ, которым я могу обновить, скажем, время темы в моей службе?
Я думаю об абстрагировании следующей функции в службу:
date: Date;
setTime(hours: number, mins: number, secs: number): void {
this.date.setHours(hours);
this.date.setMinutes(mins);
this.date.setSeconds(secs);
}
пример обслуживания
date: Subject<Date>;
constructor() {
this.date = new Subject();
}
setDate(hrs: number, mins: number, secs: number): Observable<Date> {
const tempDate = this.date;
// tempDate.set - Cannot do .setXXX here since it is a Subject and not a Date
this.date.next
}
эта библиотека может помочь вам для операций, связанных со временем, github.com/date-fns/date-fns
@TeunvanderWijst Проблема в том, что я не могу заставить какие-либо функции setXXX появиться на tempDate, независимо от того, let это или нет.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто создать новую дату, которая копирует часть текущей даты и использует временные параметры. а затем подтолкните tempDate к теме.
что-то вроде этого:
setDate(hrs: number, mins: number, secs: number): Observable<Date> {
let tempDate = this.date.getValue(); //gets the value of the subject, not the actual subject
tempDate.setHours(hours);
tempDate.setMinutes(mins);
tempDate.setSeconds(secs);
this.date.next(tempDate);
}
'getValue' does not exist on type 'Subject<Date> :-(
можно ли поменять Subject<Date> на BehaviourSubject<Date>? объяснение: stackoverflow.com/questions/43348463/…
Хм. Он принимает определение BehaviorSubject, но я все еще не могу добраться до функций .setXXX. Я сохранил как новый stackblitz: stackblitz.com/edit/off-time-edit-behaviorsubject
@physicsboy Я обновил ваш stackblitz. Теперь он работает, проблема в том, что вы используете const tempDate = this.date, и вы должны были сделать const tempDate = this.date.getValue(), как только я это сделал, чтобы получить доступ к функциям .setXXX. посмотри
Проблема не в том, что вы не можете использовать
tempDate.set(), потому что этоconst, а не декларацияlet?