javascript - 创建可由多个组件读取和更新的共享日期服务

标签 javascript html angular observable

我有一项为我提供约会的服务。我创建了一个服务,它将使用这个日期并对其进行格式化,然后将它提供给使用这个日期作为参数来调用其他服务的各种其他组件。用户可以转到这些组件中的任何一个并更改日期

我尝试使用 Observable,但我无法更新值,而且我不熟悉它们在这种情况下的概念和用法

@Component({
  selector: 'date',
  templateUrl: './date.component.html',
  styleUrls: ['./date.component.css']
 })
 export class DateComponent implements OnInit {

  selectedDate: any;
  maxDate: any;

  constructor(private dateService: HeatmapDateService) {
    this.getAsOfDate().subscribe(date => {
      let formatDate = new Date(date);
      this.selectedDate = formatDate.setDate(formatDate.getDate() + 1);
      this.maxDate = this.selectedDate;
    })

  }

  ngOnInit() {

  }

  getAsOfDate(){
    return this.dateService.get()
  }

使用服务的HTML

      <mat-form-field>
        <input readonly matInput [max]="dateService.maxDate" [matDatepicker]="picker" [(ngModel)]="dateService.selectedDate"
               (ngModelChange)="updateDate($event)">
        <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
        <mat-datepicker #picker></mat-datepicker>
      </mat-form-field>

在我的其他服务中,我使用依赖项注入(inject)将日期服务添加到构造函数,我想在用户从日期选择器中选择新日期时更新所选日期的值,但我似乎无法弄清楚如何设置日期组件以向日期选择器提供日期,当日期更改时,我调用 updateDate 函数来更改 dateService 中的日期值,但我无法更新 observable 并且 ngModel 似乎不起作用像这样。

最佳答案

我可以在文档中看到,unput 的语法有点不同 ( Datepicker input and change events example )。你试过了吗?

<mat-form-field>
  <input matInput [matDatepicker]="picker" placeholder="Input & change events"
         (dateInput)="addEvent('input', $event)" (dateChange)="addEvent('change', $event)">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

关于javascript - 创建可由多个组件读取和更新的共享日期服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54297590/

相关文章:

javascript - 从函数返回值作为jQuery中参数的值

javascript - 数组和可观察数组有什么区别?

css - 如何在 Angular 中将 ngClass 与表一起使用

javascript - 模拟http请求

javascript - 如何仅使用源 URL 而不是原始文件来调整图像大小?

javascript - IE 中是否有针对 Firefox __proto__ 的相应内容?

javascript - 尝试在 Chrome 中使用 jQuery 同步 AJAX + .ready() 时出现不可预测的行为

javascript - JQuery 没有检测到动画的 DIV id 的变化

javascript - 是否可以使用 HTML 或 javascript 操作文本区域的各个行?

jquery - 如何用半透明图像覆盖 div?