הפעלת אירוע מתוך ה-template
כדי להעביר מידע מה-class ל-template אנחנו משתמשים ב-properties. משתנים שמוגדרים ב-class וזמינים לנו לשימוש ב-template.
מה קורה כשרוצים להעביר מידע בכיוון ההפוך, מה-template ל-class? משתמשים באירועים.
טריגר של אירוע מתוך התבנית:
קוראים לאירוע ה-click שמפעיל את הפונקציה onClick שנמצאת ב-class.
html file
<button (click)="onClick()"></button>
בקובץ ה-class אפשר לבצע פעולות בתוך הפונקציה.
ts file
onClick(){
console.log('Button Check');
}
קבלת מידע עם האירוע
אם רוצים גם מידע שיעבור מקובץ ה-html נשלח את האירוע ביחד עם הפונקציה.
html file
<button (click)="onClick($event)"></button>
את הערך נקבל ב-class ונוכל להשתמש בו:
ts file
onClick(event: Event){
console.log('Button Check', event);
}
שימוש ישיר לפעולה קצרה
אפשר לבצע פעולה בתוך הקריאה לאירוע במקום לקרוא לפונקציה ב-class:
html file
<button (click)="propName = 'Some String'"></button>
אפשר גם להעביר ערכים שונים מתוך קובץ ה-html כמו האובייקט שממנו קוראים לפונ' או id של מי שקורא לפונ':
html file
<input #myInput type="text">
<button (click)="funcName(myInput.value)">Pass The value</button>
הפונ' תקבל את הערך שנשלח אליה ב-class:
ts file
funcName(value){
}
Two way binding
אפשר לחבר ישירות בין המשתנה של האירוע למשתנה שמוגדר בתוך ה-class.
בשביל זה קודם נייבא את מודל הטפסים:
app.module.ts
import { FormsModule } from '@angular/forms'
// In the import array:
imports: [
…
FormsModule
]
בקובץ ה-class נגדיר את המשתנה:
ts file
public name: string ='';
בקובץ ה-html נחבר את המשתנה:
html file
<input [(ngModel)]="name" type="text">{{ name }}
רשימה של אירועים באנגולר
ts file
// Full list of Angular Events
(click)="myFunction()"
(dblclick)="myFunction()"
(submit)="myFunction()"
(blur)="myFunction()"
(focus)="myFunction()"
(scroll)="myFunction()"
(input)="myFunction()"
(keyup)="myFunction()"
(keydown)="myFunction()"
(mousedown)="myFunction()"
(drag)="myFunction()"
(drop)="myFunction()"
שימוש בחיבור של שני אירועים
html file
<input type="text" #iterName>
<button (click)="onAddItem($event); iterValue=iterName.value"></button>
שימוש באירוע click
html file
<div class="form-group">
<label for="exampleInputEmail1">User name</label>
<input class="form-control" [(ngModel)]="name"
name="name" #nameCtrl="ngModel">
<button class="btn btn-success" (click)="clickEvent($event, nameCtrl.value)">
Submit
</button>
</div>
ts file
....
export class AppComponent {
name = '';
clickEvent(event: Event, name: string) {
console.log('Input name value: ' + name)
console.log(event);
debugger
}
}
שימוש באירוע change בבחירת select
html file
<div class="form-group">
<label>Select favouritcountry</label>
<select (change)="selectedCountry($event)" class="form-control">
<option value="india" selected="selected">India</option>
<option value="france">France</option>
<option value="germany">Germany</option>
<option value="canada">Canada</option>
</select>
</div>
ts file
selectedCountry(event: any) {
console.log(event.target.value);
}
שימוש באירוע key
html file
<div class="container">
<input (keyup)="onKeyUp($event)" />
<p>Value of inputData : {{ inputData }}</p>
</div>
ts file
export class AppComponent {
inputData: string = '';
onKeyUp(event: any) {
this.inputData = event.target.value;
}
}