[解決済み] (変更) vs (ngModelChange) in angular
質問
Angular 1は以下のものを受け付けません。
onchange()
イベントのみを受け付けます。
ng-change()
イベントと同じです。
一方、Angular 2は、以下の両方の機能を受け入れます。
(change)
と
(ngModelChange)
というイベントがあり、どちらも同じことをやっているように見えます。
何が違うのでしょうか?
性能的に優れているのはどちらですか?
ngModelChange :
<input type="text" pInputText class="ui-widget ui-text"
(ngModelChange)="clearFilter()" placeholder="Find"/>
対 変化 :
<input type="text" pInputText class="ui-widget ui-text"
(change)="clearFilter()" placeholder="Find"/>
解決方法は?
(change)
イベントを古典的な入力変更イベントにバインドしています。
https://developer.mozilla.org/en-US/docs/Web/Events/change
入力にモデルがなくても、(change) イベントを利用することができます。
<input (change)="somethingChanged()">
(ngModelChange)
は
@Output
ngModelディレクティブの モデルが変更されたときに起動されます。このイベントは ngModel ディレクティブなしでは使用できません。
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124
ソースコードでさらに発見するように。
(ngModelChange)
は新しい値を出力します。
https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169
ということは、そういう使い方ができる能力があるということですね。
<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
// do something with new value
}
基本的には、2つの間に大きな違いはないように思えますが
ngModel
を使用すると、イベントがパワーアップします。
[ngValue]
.
<select [(ngModel)]="data" (ngModelChange)="dataChanged($event)" name="data">
<option *ngFor="let currentData of allData" [ngValue]="currentData">
{{data.name}}
</option>
</select>
dataChanged(newObj) {
// here comes the object as parameter
}
は、"なしで同じことを試すと仮定します。
ngModel
事"。
<select (change)="changed($event)">
<option *ngFor="let currentData of allData" [value]="currentData.id">
{{data.name}}
</option>
</select>
changed(e){
// event comes as parameter, you'll have to find selectedData manually
// by using e.target.data
}
関連
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み] Django のフォームフィールドを隠しフィールドに変更する
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] Angular HTMLバインディング
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] Angularプロジェクトごとに生成される膨大な数のファイル
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
親子コンポーネント通信を解決する3つのVueスロット
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります