期望6个参数,但收到0个参数.ts(2554)



我正在学习使用angular 4版本的课程,但是我决定使用angular CLI的12.2.10版本和Node的14.18.1版本。

我创建了一个联系人。ts模型:

export class Contact{
private id:number;
private nom:string;
private prenom:string;
private email:string;
private tel:string;
private photo:string;
constructor(id:number,nom:string,prenom:string,email:string,tel:string,photo:string){
this.id = id;
this.nom = nom;
this.prenom = prenom;
this.email = email;
this.tel = tel;
this.photo = photo
}

}

,我试图在这里实例化一个新的类'NewContactComponent.ts':

import { Component, OnInit } from '@angular/core';
import { Contact } from 'src/model/model.contact';
@Component({
selector: 'app-new-contact',
templateUrl: './new-contact.component.html',
styleUrls: ['./new-contact.component.css']
})
export class NewContactComponent implements OnInit {
contact:Contact=new Contact();
constructor() { }
ngOnInit(): void {

}
}

但这是不可能的。下面是错误信息:

6 arguments expected, but 0 received.ts(2554)
model.contact.ts(10, 17): Aucun argument pour 'id' n'a été fourni.
(alias) new Contact(id: number, nom: string, prenom: string, email: string, tel: string, photo: string): Contact
import Contact

您要么需要将所有变量传递到Contactnew Contacts(id, nom, prenom, email, tel, photo)中,要么将所有变量标记为可选。

还可以简化构造函数,见下文。

export class Contact{
constructor(
private id?: number,
private nom?: string,
private prenom?: string,
private email?: string,
private tel?: string,
private photo?: string
){ }
}

这里需要注意两点,通过添加?,它将使该变量成为可选的。第二件要注意的事情是,通过将变量标记为私有或公共,你可以避免需要在构造函数中设置每个变量,typescript会在编译时为你这样做。

逻辑错误:

你正在尝试创建一个新的"联系人",并且在"联系人"的构造函数中,你说你将传递6个参数(id, nom, prename, email, tel和photo)

当你尝试创建某些东西时,你必须传递这个参数如:

contact:Contact = new Contact(1,'John','Mr', 'vincent@myemail.com', '+34666999666', '/assets/pic01.jpg');

和一个小快捷键:

这段代码和你的代码做的一样(如果你在自己的构造函数中声明为public/private,就不需要声明属性了,像这样):

export class Contact{
constructor(
private id:number,
private nom:string,
private prenom:string,
private email:string,
private tel:string,
private photo:string
){}

相关内容

  • 没有找到相关文章

最新更新