Обновление времени темы Date

Есть ли способ, которым я могу обновить, скажем, время темы в моей службе?

Я думаю об абстрагировании следующей функции в службу:

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
  }

stackblitz

Проблема не в том, что вы не можете использовать tempDate.set(), потому что это const, а не декларация let?

Teun van der Wijst 05.10.2018 11:09

эта библиотека может помочь вам для операций, связанных со временем, github.com/date-fns/date-fns

Anto Antony 05.10.2018 11:10

@TeunvanderWijst Проблема в том, что я не могу заставить какие-либо функции setXXX появиться на tempDate, независимо от того, let это или нет.

physicsboy 05.10.2018 16:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто создать новую дату, которая копирует часть текущей даты и использует временные параметры. а затем подтолкните 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> :-(
physicsboy 05.10.2018 16:33

можно ли поменять Subject<Date> на BehaviourSubject<Date>? объяснение: stackoverflow.com/questions/43348463/…

Teun van der Wijst 05.10.2018 16:57

Хм. Он принимает определение BehaviorSubject, но я все еще не могу добраться до функций .setXXX. Я сохранил как новый stackblitz: stackblitz.com/edit/off-time-edit-behaviorsubject

physicsboy 06.10.2018 11:55

@physicsboy Я обновил ваш stackblitz. Теперь он работает, проблема в том, что вы используете const tempDate = this.date, и вы должны были сделать const tempDate = this.date.getValue(), как только я это сделал, чтобы получить доступ к функциям .setXXX. посмотри

Teun van der Wijst 08.10.2018 08:38

Другие вопросы по теме