सवाल (बदलें) बनाम (ngModelChange) कोणीय में


कोणीय 1 अपरिवर्तनीय घटना को स्वीकार नहीं करता है, लेकिन केवल स्वीकार करता है ng-change घटना।

दूसरी तरफ कोणीय 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">

80
2018-06-30 07:16


मूल


यदि आप उनमें से दो की तुलना करना चाहते हैं, तो आप भी जोड़ सकते हैं (change) तथा (keyup) - trichetriche
मैं उन लोगों की तुलना नहीं करना चाहता हूं। मैं सिर्फ यह जानना चाहता हूं कि प्रदर्शन के लिए कौन सा सबसे अच्छा है? - Ramesh Rajendran
हाँ कोई तुलना नहीं है। यदि आप ngModel का उपयोग कर रहे हैं तो आप बाद में अन्यथा उपयोग कर सकते हैं। यह हमेशा ngModel से बचने के लिए पसंद करता है क्योंकि यह दो तरह के डेटा बाध्यकारी है, इसलिए प्रदर्शन के लिए बुरा है - Skeptor
व्यक्तिपरकता को दूर करने और फिर से खोलने के लिए मतदान करने के लिए "क्या अंतर है" और "जो अधिक प्रदर्शनकारी" पर जोर देने के लिए संपादित किया गया है। - ruffin


जवाब:


(change) शास्त्रीय इनपुट परिवर्तन घटना से जुड़ा घटना।

https://developer.mozilla.org/en-US/docs/Web/Events/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
}

असल में, ऐसा लगता है कि दो के बीच कोई बड़ा अंतर नहीं है, लेकिन 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

}

165
2017-07-13 08:16



अगर मैं ngmodel ऑब्जेक्ट के साथ परिवर्तन ईवेंट का उपयोग कर रहा हूं तो क्या होगा? - Ramesh Rajendran
@ रमेशराजेंद्रन मैंने जवाब में सुधार किया है। आप अभी भी ngModel ऑब्जेक्ट के साथ चेंज इवेंट का उपयोग कर सकते हैं, लेकिन इवेंट पास इवेंट पैरामीटर बदलते हैं, ngModelChange इवेंट नया मान पास करता है। - omeralper
हाँ +1। लेकिन मुझे ngmodelchange के साथ कोई समस्या है, जब आप ctr + A. का उपयोग कर टेक्स्ट बॉक्स से सभी मानों को साफ़ करते हैं तो ngModelChange ट्रिगर नहीं होता है। - Ramesh Rajendran
<input (ngModelChange)="modelChanged($event)"> सही नहीं है, [ngModel] आवश्यक है। - e-cloud
किसी भी परिदृश्य का सामना करना पड़ता है जिसमें पहली बार ड्रॉपडाउन मूल्य चुनते समय (परिवर्तन) आग लगती है? - forgottofly