Ajay
Ajay

Reputation: 4251

Angular2 - Supplied parameters do not match any signature of call target

import { Component, Input, OnChanges } from '@angular/core';

@Component({
  selector: 'image-display',
  templateUrl: './image-display.component.html'
})
export class ImageDisplayComponent implements OnChanges {
  @Input() image: File;
  @Input() imagePath?: string;

  private fileReader: FileReader;

  constructor() { }

  ngOnChanges() {
    if (this.image && this.fileReader) {
      this.fileReader.readAsDataURL(this.image);
    }
  }
}

On compiling this with AOT getting below error:

PRINHYLTPAP0592:matata ajays$ ng build --prod --aot
/myApp/src/$$_gendir/app/image-uploader/image-display/image-display.component.ngfactory.ts (61,9): 
Supplied parameters do not match any signature of call target.

Upvotes: 9

Views: 17626

Answers (2)

Swagath
Swagath

Reputation: 21

If there is any mismatch between method which is called from html, and the definition of the method in the component, we see this error.

mostly mismatch in the number of parameters passed to the method while calling.

I was passing $event in onModelChange method, which is not decalared in the method definition.

dropdownChanged(){
  console.log("dropdown changed");
}
dropdownChangedActual(evnt:any){
  console.log("dropdown changed");
}
<select [(ngModel)]="myModel" (ngModelChange)="dropdownChanged($event)">
     <option>.............</option>
</select>

Either declare $event or any parameters we pass or Pass the parameters as mentioned in method definition.

Upvotes: 2

Pedro Penna
Pedro Penna

Reputation: 1187

AOT forces you to inform every single mandatory parameter for every method call.

In your example, the method ngOnChanges() should actually be ngOnChanges(changes: SimpleChanges).

Upvotes: 23

Related Questions