kzen.dev
  • Spørsmål
  • Tagger
  • Brukere
Meldinger
Belønninger
Registrering
Når du har registrert deg, vil du bli varslet om svar og kommentarer til spørsmålene dine.
Logg inn
Hvis du allerede har en konto, kan du logge inn for å sjekke nye varsler.
Det vil være belønninger for spørsmål, svar og kommentarer.
Mer
Kilde
Rediger
Ramesh Rajendran
Ramesh Rajendran
Spørsmål

(change) vs (ngModelChange) i angular

Angular 1 aksepterer ikke onchange()-hendelsen, den aksepterer bare ng-change()-hendelsen.

Angular 2 aksepterer derimot både (change) og (ngModelChange)-hendelser, som begge ser ut til å gjøre det samme.

Hva er forskjellen?

hvilken er best for ytelse?

ngModelChange:

<input type="text" pInputText class="ui-widget ui-text"
    (ngModelChange)="clearFilter()" placeholder="Find"/>

vs change:

<input type="text" pInputText class="ui-widget ui-text" 
    (change)="clearFilter()" placeholder="Find"/>
256 2017-06-30T07:16:42+00:00 3
Ramesh Rajendran
Ramesh Rajendran
Redigerte spørsmål 15. oktober 2019 в 5:19
Programmering
javascript
html
angular
typescript
angular-ngmodelchange
Løsning / svar
 omeralper
omeralper
13. juli 2017 в 8:16
2017-07-13T08:16:08+00:00
Mer
Kilde
Rediger
#33854785

(change)`-hendelse knyttet til klassisk input endringshendelse.

https://developer.mozilla.org/en-US/docs/Web/Events/change

Du kan bruke (change) event selv om du ikke har en modell ved inngangen som

<input (change)="somethingChanged()">

(ngModelChange) er @Output for ngModel-direktivet. Den utløses når modellen endres. Du kan ikke bruke denne hendelsen uten ngModel-direktivet.

https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L124

Etter hvert som du oppdager mer i kildekoden, sender (ngModelChange) ut den nye verdien.

https://github.com/angular/angular/blob/master/packages/forms/src/directives/ng_model.ts#L169

Så det betyr at du har evne til slik bruk:

<input (ngModelChange)="modelChanged($event)">
modelChanged(newObj) {
    // do something with new value
}

I utgangspunktet virker det som om det ikke er noen stor forskjell mellom to, men ngModel-hendelser får makten når du bruker [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
}

anta at du prøver det samme uten " ngModel ting"

<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
}
 Michael
Michael
Redigert svar 9. april 2019 в 2:48
399
0
 CAK2
CAK2
27. desember 2018 в 12:30
2018-12-27T00:30:21+00:00
Mer
Kilde
Rediger
#33854786

I Angular 7 vil (ngModelChange)="eventHandler()" utløses før verdien bundet til [(ngModel)]="value" endres, mens (change)="eventHandler()" utløses etter verdien bundet til [(ngModel)]="value" endres.

Tiago  supports GoFundMonica
Tiago supports GoFundMonica
Redigert svar 27. desember 2018 в 11:54
57
0
 Disaster
Disaster
25. juli 2019 в 11:00
2019-07-25T11:00:46+00:00
Mer
Kilde
Rediger
#33854788

Som jeg har funnet og skrevet i et annet emne - dette gjelder vinkel < 7 (ikke sikker på hvordan det er i 7+)

Bare for fremtiden

vi må observere at [(ngModel)]="helt.navn" er bare en snarvei som kan sukkeres til: [ngModel]="hero.name" (ngModelChange)="hero.name = $event".

Så hvis vi de-sukker koden vi ville ende opp med:

'<select (ngModelChange)="onModelChange()" [ngModel]="hero.name" (ngModelChange)="hero.name = $event">`

eller

<[ngModel]="helt.navn" (ngModelChange)="helt.navn = $event" velg (ngModelChange)="onModelChange()">

Hvis du inspiserer koden ovenfor, vil du legge merke til at vi ender opp med 2 ngModelChange-hendelser, og de må kjøres i en viss rekkefølge.

For å oppsummere: **Hvis du plasserer ngModelChange før ngModel, får du $event som den nye verdien, men modellobjektet ditt har fortsatt den forrige verdien. Hvis du plasserer den etter ngModel, vil modellen allerede ha den nye verdien.

SOURCE

3
0
Legg til spørsmål
Kategorier
Alle
Teknologi
Kultur / Fritid
Liv / Kunst
Vitenskap
Profesjonell
Virksomhet
Brukere
Alle
New
Popular
1
Ilya Smirnov
Registered 1 dag siden
2
Денис Васьков
Registered 2 dager siden
3
Dima Patrushev
Registered 5 dager siden
4
sirojidddin otaboyev
Registered 1 uke siden
5
Елена Гайдамамакинат
Registered 1 uke siden
BG
DA
DE
EL
ES
FI
FR
ID
IT
JA
LT
NL
NO
PT
RO
RU
TR
ZH
© kzen.dev 2023
Kilde
stackoverflow.com
under lisens cc by-sa 3.0 med attribusjon