TypeScript 中的类型不存在属性

Posted

技术标签:

【中文标题】TypeScript 中的类型不存在属性【英文标题】:Property does not exist on type in TypeScript 【发布时间】: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 生成项目时,我将它用作角度类型 【参考方案1】:

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

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

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

【讨论】:

没错!我忘了将它添加到我的构造函数中,还声明了加载控制器,谢谢! 我的立场是正确的,还没有使用 v4,所以这是我的借口:P 太棒了!我也对 AJT 的评论感到困惑。如果有帮助,请点赞

以上是关于TypeScript 中的类型不存在属性的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 中的类型不存在属性

TypeScript 中的 EventTarget 类型不存在属性“值”

如何修复 typeScript 中的“对象”类型上不存在“属性”拨号

类型 IInstance 上不存在 typescript 文件属性 selectpicker 中的错误

Discord.js 指南:Typescript 中的“Client<boolean>”类型上不存在属性“commands”

vue中的Typescript - 类型'Vue |上不存在属性'validate'元素| Vue [] |元件[]'。