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);
}
}
}
これをAOT取得エラーでコンパイルすると:
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.
AOTは、すべてのメソッド呼び出しのすべての必須パラメーターを通知するように強制します。
あなたの例では、メソッドngOnChanges()は実際にはngOnChanges(changes:SimpleChanges)でなければなりません。
Htmlから呼び出されるメソッドとコンポーネント内のメソッドの定義に不一致がある場合、このエラーが表示されます。
呼び出し中にメソッドに渡されるパラメーターの数がほとんど一致しません。
OnModelChangeメソッドで$ eventを渡していましたが、これはメソッド定義で宣言されていません。
dropdownChanged(){
console.log("dropdown changed");
}
dropdownChangedActual(evnt:any){
console.log("dropdown changed");
}
<select [(ngModel)]="myModel" (ngModelChange)="dropdownChanged($event)">
<option>.............</option>
</select>
$ eventまたは渡すパラメーターを宣言するか、メソッド定義で述べたようにパラメーターを渡します。
image-display.component.htmlファイルのコードを提供してください。テンプレート上の変数がコンポーネント上で初期化されていない可能性があります。 ImageDisplayComponentに存在する場合、テンプレートで使用したすべての変数を確認します。