コンポーネント関数は角度2で2回実行されます

user203687

私は次のようなコンポーネントを持っています:

    import { Component, OnInit } from '@angular/core';

    @Component({
        selector: 'app',
        template: `
<div>
    <div>value of a :
        <input [(ngModel)]="a" />
    </div>
    <div>value of b :
        <input [(ngModel)]="b" />
    </div>
    <div>
        Value of a = {{a}}
        <br> Value of b = {{b}}
        <br> Sum instantaneous {{calc(a+b)}}
    </div>
</div>
`   
    })
    export class AppComponent implements OnInit {

        a: string = "";
        b: string = "";
        constructor() { }

        ngOnInit() {
        }

        calc() {
            console.log('test');
            return (+this.a + +this.b);
        }
    }

テキストボックス内の何かを変更する(たとえば、キーを押す)たびに、またはテキストボックスのフォーカス/フォーカス解除だけでも、「calc」関数が2回実行されます。

ここで何が欠けているのか、または関数を(2回ではなく)1回実行する方法を教えてください。

ラザール・リュベノビッチ

これは、変更検出がおそらく思っているよりも頻繁に実行されるため、特に開発者モードですべてが2回チェックされるために発生します。

まさにこの理由から、テンプレートから関数を呼び出すことは想定されていません。解決策の1つは、純粋関数として宣言できるパイプを使用することです。

@Pipe({name: 'calc'})
export class CalcPipe implements PipeTransform {
  public transform(a: number, b: number): number {
    return a + b
  }
}

そして、このように使用します。

{{ a | calc : b }}

それ以外の場合は、クラスのプロパティを更新するカスタムロジックを作成することをお勧めします。次に、関数呼び出しの代わりにプロパティをバインドします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

VuejsコンポーネントからのAPIリクエストは2回実行されます

分類Dev

コンポーネント関数は複数回実行されます反応

分類Dev

コンストラクターメソッドとrenderメソッドはreactコンポーネントで2回実行されます

分類Dev

setInterval関数はAngular6の他のコンポーネントでも実行されています

分類Dev

'Finally'ステートメントは再帰関数で2回実行されます[Python3.6] p

分類Dev

Reactコンポーネントは2回レンダリングされ、状態フックを使用しない関数コンポーネントは1回だけレンダリングされます

分類Dev

コールバック関数の実行時、Angular2コンポーネントの「this」は未定義です

分類Dev

計算された関数は、あるコンポーネントでは実行されますが、別のコンポーネントでは実行されません

分類Dev

AngularJSは関数を2回実行しますが、コントローラーは1回だけ開始されます

分類Dev

SetTimeoutは、コンポーネントが再構築された場合にのみ2回実行されます

分類Dev

高階関数が2回レンダリングされ、子コンポーネントがトリガーされます

分類Dev

ガウス-ザイデル反復ごとにコンポーネントが2回実行されるのはなぜですか?(OpenMDAO 2.4.0)

分類Dev

Reactコメントコンポーネント-リストに新しく追加されたコメントコンポーネントをターゲットにして、このコンポーネントのみで関数を実行します

分類Dev

Angular:コンポーネントに関数を渡します。この関数は、ターゲットコンポーネントで実行されると、ローカル(ターゲットコンポーネントへの)メソッドを呼び出す必要があります。

分類Dev

最初のコンポーネントが前に実行されるときに、2つのコンポーネント間で値を共有します

分類Dev

2つの状態変数が更新されたときにコンポーネントが2回レンダリングされるのは正常ですか?

分類Dev

子コンポーネント内で関数を2回呼び出すReactJSは、親状態を2回設定できません

分類Dev

ポート80で2回実行されるhttp.ListenAndServeハンドラー関数

分類Dev

Codenameone-リストコンポーネントは実際の電話では低速で実行されます

分類Dev

Vue動的コンポーネントは2回レンダリングされます

分類Dev

Reactコンポーネントが2回レンダリングされるのはなぜですか?

分類Dev

Reactでは、親コンポーネントは、子コンポーネントで実行された非同期フェッチ関数の応答からどのように状態を設定できますか?

分類Dev

React JS Higher-Order-コンポーネントは、関数の外部で状態が設定されている場合、関数を実行しません

分類Dev

これらのコンポーネントの「マウント」関数が実行される順序を決定するものは何ですか?

分類Dev

ポイントフリー関数は共有されていますが、2回評価されます

分類Dev

状態が含まれていないクラスコンポーネントでrenderメソッドが2回実行されるのはなぜですか?

分類Dev

Dagger2 / Android:@FragmentScopedサブコンポーネントは回転ごとに再作成されます

分類Dev

Reactコンポーネントのprops配列は、コンポーネント内の関数で使用されると更新されます

分類Dev

useEffectに渡された関数は、並行モードであっても、コンポーネントが呼び出された後に少なくとも1回呼び出されることが保証されていますか?

Related 関連記事

  1. 1

    VuejsコンポーネントからのAPIリクエストは2回実行されます

  2. 2

    コンポーネント関数は複数回実行されます反応

  3. 3

    コンストラクターメソッドとrenderメソッドはreactコンポーネントで2回実行されます

  4. 4

    setInterval関数はAngular6の他のコンポーネントでも実行されています

  5. 5

    'Finally'ステートメントは再帰関数で2回実行されます[Python3.6] p

  6. 6

    Reactコンポーネントは2回レンダリングされ、状態フックを使用しない関数コンポーネントは1回だけレンダリングされます

  7. 7

    コールバック関数の実行時、Angular2コンポーネントの「this」は未定義です

  8. 8

    計算された関数は、あるコンポーネントでは実行されますが、別のコンポーネントでは実行されません

  9. 9

    AngularJSは関数を2回実行しますが、コントローラーは1回だけ開始されます

  10. 10

    SetTimeoutは、コンポーネントが再構築された場合にのみ2回実行されます

  11. 11

    高階関数が2回レンダリングされ、子コンポーネントがトリガーされます

  12. 12

    ガウス-ザイデル反復ごとにコンポーネントが2回実行されるのはなぜですか?(OpenMDAO 2.4.0)

  13. 13

    Reactコメントコンポーネント-リストに新しく追加されたコメントコンポーネントをターゲットにして、このコンポーネントのみで関数を実行します

  14. 14

    Angular:コンポーネントに関数を渡します。この関数は、ターゲットコンポーネントで実行されると、ローカル(ターゲットコンポーネントへの)メソッドを呼び出す必要があります。

  15. 15

    最初のコンポーネントが前に実行されるときに、2つのコンポーネント間で値を共有します

  16. 16

    2つの状態変数が更新されたときにコンポーネントが2回レンダリングされるのは正常ですか?

  17. 17

    子コンポーネント内で関数を2回呼び出すReactJSは、親状態を2回設定できません

  18. 18

    ポート80で2回実行されるhttp.ListenAndServeハンドラー関数

  19. 19

    Codenameone-リストコンポーネントは実際の電話では低速で実行されます

  20. 20

    Vue動的コンポーネントは2回レンダリングされます

  21. 21

    Reactコンポーネントが2回レンダリングされるのはなぜですか?

  22. 22

    Reactでは、親コンポーネントは、子コンポーネントで実行された非同期フェッチ関数の応答からどのように状態を設定できますか?

  23. 23

    React JS Higher-Order-コンポーネントは、関数の外部で状態が設定されている場合、関数を実行しません

  24. 24

    これらのコンポーネントの「マウント」関数が実行される順序を決定するものは何ですか?

  25. 25

    ポイントフリー関数は共有されていますが、2回評価されます

  26. 26

    状態が含まれていないクラスコンポーネントでrenderメソッドが2回実行されるのはなぜですか?

  27. 27

    Dagger2 / Android:@FragmentScopedサブコンポーネントは回転ごとに再作成されます

  28. 28

    Reactコンポーネントのprops配列は、コンポーネント内の関数で使用されると更新されます

  29. 29

    useEffectに渡された関数は、並行モードであっても、コンポーネントが呼び出された後に少なくとも1回呼び出されることが保証されていますか?

ホットタグ

アーカイブ