Messaoud Med Yassine
Messaoud Med Yassine

Reputation: 35

An argument for 'id' was not provided. angular 11

I'm trying to create a TS User class with angular. I declared my attributes as shown in the code below, but I'm getting this error.

An argument for 'id' was not provided.

export class User {

   private  id: number;
   private  etabName: string;
 

  constructor(id: number, etabName: string, ) {
    this.id = id;
    this.etabName = etabName;
   
  }

  get _id(): number {
    return this. id;
  }

  set _id(value: number) {
    this. id = value;
  }



}

Upvotes: 2

Views: 20483

Answers (3)

Sameer
Sameer

Reputation: 5188

Original Answer

The issue occurs when you try to instantiate the class without passing arguments, as you did not specify arguments will be optional.

Make arguments optional like this

export class User {
  ... 

  constructor(id?: number, etabName?: string, ) {
    this.id = id || 0; //Specify default value
    this.etabName = etabName || ''; //Specify default value
   
  }
  ...
}

then you can instantiate class without arguments

const user = new User();//works

Update

You can write it even better with this syntax below, Typescript will take care of creating properties and assigning default values to it.

class User {
  constructor(private id: number = 0, private etabName: string = '') {
  }

   ...setters and getters omitted for readability
}

The above typescript will be converted to below javascript

class User {
    constructor(id = 0, etabName = '') {
        this.id = id;
        this.etabName = etabName;
    }
   ...setters and getters omitted for readability
}

Upvotes: 5

BluelikeSky8
BluelikeSky8

Reputation: 1

I think you need to provide move Information

export class User {

   private  id: number;
   private  etabName: string;
 

  constructor(id: number, etabName: string) {
    this.id = id;
    this.etabName = etabName;
   
  }

  get _id(): number {
    return this.id;
  }

  set _id(value: number) {
    this.id = value;
  }



}

Upvotes: 0

Krishna Mohan
Krishna Mohan

Reputation: 1732

Remove the extra space of this. id = value;. Change it to this.id = value;.

Upvotes: 0

Related Questions