Ошибка в машинописном тексте. Свойство не существует в типе void. - PullRequest
2 голосов
/ 19 января 2020

Что ж, случается, что у меня есть некоторый код, созданный с помощью angular bootstrap, который является сборщиком данных, который находится в регистре участника событий (который вы нажимаете новый и создаете новое событие), и я хочу, чтобы пользователь выберите дату и сохраните ее, вот код выбора даты:

<code>  <p>Selecione a data</p>

                    <ngb-datepicker #dp [startDate]="modelAtual" [(ngModel)]="modelAtual" (navigate)="date = $event.next"></ngb-datepicker>

                            <pre>Month: {{ date.month }}.{{ date.year }}
Model: {{ model | json }}

, а затем у меня есть код для сохранения информации о дате, которая в машинописи:

  salvarImagem() {
    if (this.chave === undefined) {
      let dat1=new Date().getMilliseconds();
      const filePath = `/eventos/${dat1}-${this.selecionado["lastModified"]}` + '.' + this.selecionado['tipoarquivo'];
      const fileRef = this.storage.ref(filePath);
      const task = this.storage.upload(filePath, this.file);
      let datahoje = new Date(this.modelAtual.year,this.modelAtual.month,this.modelAtual.day).getTime();
      this.selecionado['dataInicial']=datahoje;
      var horario = this.time.hour + ':'+ this.time.minute;
      this.selecionado['horaInicial']=horario; 



      // observe percentage changes
      this.uploadPercent = task.percentageChanges();
      // get notified when the download URL is available
      task.snapshotChanges().pipe(
        finalize(() => {
          this.downloadURL = fileRef.getDownloadURL();
          this.downloadURL.toPromise().then(du => {

            this.selecionado["arquivo"] = du;

            this.service.add(this.selecionado);

            this.router.navigate(['/eventos']);
            alert("Objeto salvo");

          });
        })
      ).subscribe();

    } else {
      this.service.update(this.chave, this.selecionado);
      this.router.navigate(['/estabelecimentos']);
      alert("Objeto salvo");
    }
  }

, а затем у меня есть код, который загружается всякий раз, когда пользователь хочет изменить этот регистр (что вы можете сделать), и для того, чтобы точно указать дату, которую он выбирает раньше, я пытаюсь назначить переменная modelAtual переменной datahoje, которая по какой-то причине возвращает ошибку, упомянутую в заголовке

if (this.chave !== undefined) {
  this.service.get(this.chave).valueChanges().subscribe(obj => {
    this.selecionado = obj;
    this.logo = this.selecionado["arquivo"];
    //this.modelAtual = { year: 2011, month: 7, day:23};
    this.modelAtual = this.salvarImagem().datahoje;

  })
}

, сможет ли кто-нибудь сказать мне причину этого?

1 Ответ

0 голосов
/ 21 января 2020

TL; DR (краткий ответ):

ваш метод salvarImagem ничего не возвращает (явный salvarImagem(): void) и, глядя на ваш код, вы должны вернуть объект со свойством datahoje

Более длинный ответ:

Чтобы избежать ошибки, вам нужно либо вернуть значение

salvarImagem(): { datahoje: Date } {
  ...
  return { datahoje };
}

, либо вызвать метод и получить значение от объекта, который вы отредактировали (как сторону эффект)

this.selecionado['dataInicial']

Немного о типах Typescripts:

https://www.typescriptlang.org/docs/handbook/basic-types.html

Кроме того, ваша IDE "знает" return введите - вы можете проверить его, нажав Ctrl (cmd для MacOS) + наведя указатель мыши на метод.

...