mat-slide-toggle автоматически изменяет true / false в Firestore - PullRequest
0 голосов
/ 29 июня 2018

Могу ли я автоматически изменить истинное / ложное состояние переключателя мат-слайда относительно определенного времени? Я работаю с Firestore.

Мне бы хотелось, чтобы, когда оно равно true, через 24 часа оно автоматически изменилось бы на false. Возможно ли это?

Я пытаюсь предоставить доступ к контенту на определенное время.

Мой код на данный момент обновляется хорошо, но вручную:

component.html

<mat-slide-toggle #toggle [ngModel]="aviso.publicado" (ngModelChange)="actualizarPublicado(aviso.id, aviso, $event)">
  <span *ngIf="!aviso.publicado" class="text-muted">No publicado</span>
  <span *ngIf="aviso.publicado" class="text-primary">Publicado</span>
</mat-slide-toggle>

component.ts

actualizarPublicado(key, obj, e){
  this.fs.updatePublicado(key, e);
}

service.ts

updatePublicado(key, publicado){
  this.afs.doc('avisos/' + key).update({publicado});
}

1 Ответ

0 голосов
/ 29 июня 2018

Вы пытались использовать функцию setInterval?

toggleValue = false;
interval : any;

ngOnInit(){
    this.set24HourInterval();
}

set24HourInterval(){
    this.interval = setInterval(()=>{
        this.toggleValue = !this.toggleValue;
        this.fs.updatePublicado(this.aviso.id, this.toggleValue);
    },24*60*60*1000);
}

И если вы хотите прекратить итерации в соответствии с условием, вы можете просто использовать

this.clearInterval(this.interval);

внутри этой функции.

ОБНОВЛЕНИЕ:

  actualizarPublicado() {
    this.interval = setInterval(() => {
      this.avisos.subscribe((avisos) => {
        avisos.forEach((aviso) => {
          aviso.publicado = !aviso.publicado;
          this.fs.updatePublicado(aviso.id, aviso.publicado);
        });
      });
    }, 2000);
  }
...