コンポーネントにEventEmitter
がありますが、次のエラーを返すためコンパイルできません:「指定されたパラメーターは呼び出しターゲットのシグネチャと一致しません」
私のコンポーネント:
@Output() addModel = new EventEmitter<any>();
saveModel($event, make, name) {
this.addModel.emit(make, name);
}
this.addModel.emit()
のパラメーターの1つを削除すると動作しますが、2つのパラメーターとその方法をeventEmitterに渡すことはできますか?
私も試しました:
@Output() addModel = new EventEmitter<any,any>();
しかし、それは動作しません
EventEmitter
APIのemit
メソッドを見ると、T
型のパラメーターを1つしか取得できません。
emit(value ?: T)
パラメータは1つしか許可されないため、emitメソッドのobject
のようにパラメータを渡すことを検討してください。同様に、以下のメソッドmake
およびname
変数はそれぞれの値を保持しています。
this.addModel.emit({make: make, name: name});
//shorthand is below
this.addModel.emit({make, name});
作ることで修正しました
EventEmitter<object>();
次に、次のようなオブジェクトを渡すことができました。
this.MyOutputVariable.emit({ name: 'jack', age: '12' });
そしてそれは働いた。
強く入力する別のオプションは次のとおりです。
@Output addModel = new EventEmitter<{make: string, name: string}>();
その後、@ Pankaj-Parkarショーのように送信できます
this.addModel.emit({make, name});
またはthis.addModel.emit({make: 'honda', name: 'civic'});
これで、object
またはany
を使用する代わりに、強い型付けができました。