【问题标题】:Property does not exist on type in TypeScriptTypeScript 中的类型不存在属性
【发布时间】:2019-02-13 23:50:46
【问题描述】:

我正在研究 ionic 4 crud,在我的 create.page.ts 中我正在验证表单,但是我试图使用异步方法并等待使用 this.loading.ctrl,但我收到了在标题。

此外,当我尝试处理它的返回时,this.router.navigateByUrl(''); 上也会出现错误,如果不清楚这里到底发生了什么,这是我的create.page.ts

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { LoadingController, AlertController } from '@ionic/angular';
import { FirestoreService } from '../../services/data/firestore.service';

@Component({
  selector: 'app-create',
  templateUrl: './create.page.html',
  styleUrls: ['./create.page.scss'],
})
export class CreatePage implements OnInit {
  public createConsultaForm: FormGroup;

  constructor(
    public firestoreService: FirestoreService, formBuilder: FormBuilder,
    loadingCtrl: LoadingController, alertCtrl: AlertController
  ) {
      this.createConsultaForm = formBuilder.group({
        id: ['', Validators.required],
        unidade: ['', Validators.required],
        medNome: ['', Validators.required],
        especialidade: ['', Validators.required],
        endereco: ['', Validators.required],
        data: ['', Validators.required],
        hora: ['', Validators.required],
      });
  }

  ngOnInit() {
  }

  async createConsulta() {
    const loading = await this.loadingCtrl.create();
    const id = this.createConsultaForm.value.id;
    const unidade = this.createConsultaForm.value.unidade;
    const medNome = this.createConsultaForm.value.medNome;
    const especialidade = this.createConsultaForm.value.especialidade;
    const endereco = this.createConsultaForm.value.endereco;
    const data = this.createConsultaForm.value.data;
    const hora = this.createConsultaForm.value.hora;

    this.firestoreService
      .createConsulta(unidade, especialidade, medNome,  endereco, data, hora)
      .then(
        () => {
          loading.dismiss().then(() => {
            this.router.navigateByUrl('');
          });
        },
        error => {
          console.error(error);
        }
      );

    return await loading.present();
  }
}

在这一行:

const loading = await this.loadingCtrl.create();

我明白了:

类型“CreatePage”上不存在属性“loadingCtrl”

在这一行:

this.router.navigateByUrl('');

我明白了

“CreatePage”类型上不存在属性“路由器”

【问题讨论】:

  • 你能给出完整的错误吗?哪个属性不存在?错误在哪一行?
  • 我已编辑我的帖子以更明显地显示错误
  • 有人刚刚发布了解决方案,但他们删除了他们的答案哈哈
  • @AJT_82,有,因为当我通过 CLI 生成项目时,我将它用作角度类型

标签: angular typescript ionic-framework google-cloud-firestore


【解决方案1】:

我没有看到你导入的任何地方Router

导入Router并在构造函数中实例化

constructor(router: Router) { this.router.navigateByUrl(...); }

【讨论】:

  • 没错!我忘了将它添加到我的构造函数中,还声明了加载控制器,谢谢!
  • 我的立场是正确的,还没有使用 v4,所以这是我的借口:P
  • 太棒了!我也对 AJT 的评论感到困惑。如果有帮助,请点赞
猜你喜欢
  • 2023-04-02
  • 2018-08-17
  • 1970-01-01
  • 2023-02-06
  • 2017-11-03
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
相关资源
最近更新 更多