Reputation: 4251
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
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
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