イベントに関連付けられた機能を動的に変更したいと考えています。 「:式が期待された場所ガット補間({{}})パーサーエラー」:私はこの試みたイベントの関数名を角度2で変更しますか?
(click) = "{{myFunction}}"
をしかし、私はエラーを取得します。 条件に応じて、TypeScriptのmyFunctionを1つまたは他の関数に変更する必要があります。
イベントに関連付けられた機能を動的に変更したいと考えています。 「:式が期待された場所ガット補間({{}})パーサーエラー」:私はこの試みたイベントの関数名を角度2で変更しますか?
(click) = "{{myFunction}}"
をしかし、私はエラーを取得します。 条件に応じて、TypeScriptのmyFunctionを1つまたは他の関数に変更する必要があります。
私はあなたのためplunkerを作成:https://plnkr.co/edit/se3kz5AF4sSmgHue8W7u?p=preview
onImgClick() {
if(this.imgDisabled){
console.log('img disabled');
return;
}
alert('clicked');
this.imgDisabled = true;
console.log('img disabled');
let that = this;
setTimeout(() => {
that.imgDisabled = false;
console.log('img enabled');
}, 5000);
}
'that'を使う目的は何ですか? –
this in()=> {this。 }は関数の参照になります。あなたはそれを使ってコンポーネントにアクセスする必要があります。 – wannadream
あなたは矢印の機能を骨組みにする必要があります。 'this 'in'()=> {this。 } '**は「関数の参照」ではありません**。これは、それが一部であるオブジェクトである 'onImgClick'からの' this'です。この概念は矢印関数の基本です。 –
何をしようとするための技術的な用語は、 "スロットリング" です。それを探してみてください。多くのライブラリがその機能を何らかの形で提供します。多くの場合、それは「高次関数」として実装されています。これは、基底の関数を取り込み、それを抑制した関数を返す関数です。基本的なロジックは以下のとおりです。あなたのコンポーネントで今
function throttle(fn, ms) {
let last = 0;
return function() {
const now = +new Date();
if (now > last + ms) {
last = now;
fn.apply(this, arguments);
}
};
}
:つもりな作業ではありません
(click)="myFunction()"
myFunction = throttle(this.click);
。どのようにしてコンポーネント内の異なるメソッド名を知ることができますか?すべてのメソッド名を抽出し、バインドするものを見つけなければなりません。つまり、それに応じてテンプレートを変更する必要があります。 – wannadream
ユーザーがボタンをクリックすると何かが画面に表示されますが、エラーを回避するために同じ機能を実行する前にボタン機能を数秒間無効にする必要があります。だから、ユーザーがクリックした後、私は関数名を数秒間何に変更してからそれを元に戻します。 – user33276346
イベント名を置き換えることは出来ません。ブール値を[無効]にバインドして、可用性を制御することができます。 – wannadream