web-dev-qa-db-ja.com

Angular2-提供されたパラメーターは、呼び出し先の署名と一致しません

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.
9
Ajay

AOTは、すべてのメソッド呼び出しのすべての必須パラメーターを通知するように強制します。

あなたの例では、メソッドngOnChanges()は実際にはngOnChanges(changes:SimpleChanges)でなければなりません。

22
Pedro Penna

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または渡すパラメーターを宣言するか、メソッド定義で述べたようにパラメーターを渡します。

2
Swagath

image-display.component.htmlファイルのコードを提供してください。テンプレート上の変数がコンポーネント上で初期化されていない可能性があります。 ImageDisplayComponentに存在する場合、テンプレートで使用したすべての変数を確認します。

2
doyevaristo