問題タブ [angular-changedetection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular7 - 同じ値を 2 回入力すると、コンポーネントで [ngModel] が更新されない
最小限の Stackblitz の例
https://stackblitz.com/edit/angular-mqqvz1
Angular 7 アプリで、フィールドを持つ単純なコンポーネントを作成しました<input>
。
キーボードで入力値を変更するときは、値をonBlurにフォーマットします。- 最小限の例では、文字列「EDIT」を追加したいだけです。
これは基本的に機能しています:
- 「test」と入力してフィールドをぼかすと、「test EDIT」に変更されます
- 「lala」と入力してフィールドをぼかすと、「lala EDIT」に変更されます
ただし 、「テスト」と入力すると、ぼかし(機能します)、「テスト」と再度入力すると、機能しなくなります。
関数が呼び出され(onInputUpdate()
コンソール ログで確認できます)、変数inputValue
が更新されます (コンポーネントで確認できます{{inputValue}}
)。ただし、入力値は変更されません。
「test EDIT」になると思いますが、「test」のままです。
別の文字列を入力すると機能しますが、同じ文字列を 2 回続けて入力すると機能しません。何故ですか?どうすればこれを修正できますか?
component.html
component.ts
android - onLoad を呼び出す ChangeDetector
そのため、changeDectector.detectChanges() を呼び出す必要があるいくつかのアニメーションを含むカスタム コンポーネントがあります。
私のchildComponent.tsから:
これは、次のように ngif を親コンポーネントに追加するまで機能していました。
ngif を追加すると、何らかの理由で childComponent が onLoad multipleTimes を呼び出す原因になります。したがって、this.changeDetector.detectChanges() を呼び出すたびに、onLoad メソッドがトリガーされ、「最大コール スタック サイズを超えました」というエラーが発生します。ここで何が起こっているか知っている人はいますか?どうすれば修正できますか?
よろしくお願いします!