Showing posts with label bindings in angular. Show all posts
Showing posts with label bindings in angular. Show all posts

Monday, June 21, 2021

ஆங்குலரில்பைண்டிங்குகள்.

 


ஆங்குலரில்பின்வரும்பைண்டிங்குகள்உள்ளன.

1.      இன்டெர்போலேசன்

2.      பிராப்பர்ட்டிபைண்டிங்க்

3.      ஆட்ரிபியூட்பைண்டிங்க்

4.      கிளாஸ்பைண்டிங்க்

5.      ஸ்டைல்பைண்டிங்க்

6.      ஈவண்ட்பைண்டிங்க்.

ஆங்குலர்இன்டெர்பொலேசன்.

சான்றுநிரல்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <h1>{{ firstName }}</h1>

              `

})

export class AppComponent {

    firstName: string = 'Tom';

}

 

\வெளியீடு:


 

 

மேலேஉள்ளநிரலில்firstNameஎன்பதன்மதிப்பு “Tom”கிளாசில்இருந்துஎடுக்கப்பட்டுடென்ப்லேட்டில் {{firstName}} என்இன்செர்ட்செய்யப்பட்டுள்ளது.

இதன்மூலம் Tom என்பது h1 அளவில்வெளியீடுசெய்யப்பட்டுள்ளது.

 

பிராப்பர்ட்டிபைன்டிங்க்:

இதுவும்கிட்டத்தட்டஇன்டெர்பொலேசன்போன்றேசெயற்படுகின்றது.

கீழேஉள்ளசான்றுநிரல்வரியில்இமேஜ்பாத்ஆனதுஇன்டெர்பொலேசன்மூலம்பைண்ட்செய்யப்படுகின்றது.

<imgsrc='{{imagePath}}'/>

 

இதேவரிகள்பிராப்பர்ட்டிபைன்டிங்க்மூலம்பின்வருமாறுஎழுதப்படுகின்றது.

<img [src]='imagePath'/>

 

 

பிராப்பர்ட்டிஆனதுஸ்கொயர்பிராக்கெட்டிலும்அதன்மதிப்புசிங்கிள்குவோட்டிலும்கொடுக்க்ப்பட்டுள்ளது.

இதுவும்அதேரிசல்டைதான்தரும்.

இன்டெர்பொலேசன், பிராப்பர்ட்டிபைண்டிங்க்இரண்டுமேடேட்டாவைகாம்பனண்ட்ம்திப்பில்இருந்துஎடுத்துடார்க்கெட்எலிமெண்ட்மதிப்பில்பைண்ட்செய்யப்படுகின்றனஇரண்டுமேஒன்வேடேட்டாபைண்டிங்க்தான்.

எங்கேஇன்டெர்பொலேசனைகட்டாயம்பயன்படுத்தவேண்டுமென்றால்ஸ்ட்ரிங்கைகன்காடினேட்செய்யும்பொழுது.

<imgsrc='http://www.pragimtech.com/{{imagePath}}' />

எங்கேபிராப்பர்ட்டிபைண்டிங்கைபயன்படுத்தவேண்டும்என்றால்டேட்டாஆனதுஸ்ட்ரிங்க்அல்லாதுபிறமதிப்பாய்இருக்கும்பொழுது.

<button [disabled]='isDisabled'>Click me</button>

isDisabledஎன்பதுபூலியன்மதிப்பாய்இருப்பதால்பிராபர்ட்டிபைண்டிங்க்பயன்படுத்தப்பட்டுள்ளது.இதன்மதிப்புட்ரூஆகஇருக்கும்பொழுதுபட்டன்ஆனதுடிஸேபிள்செய்யப்படுகின்றது.

எனினும்இதில்இன்டெர்பொலேசனைபயன்படுத்தினால்ரிசல்ட்எதிர்பார்த்தவண்ணம்இருக்காது.

சான்று:

<button disabled='{{isDisabled}}'>Click me</button>

மேலேஉள்ளசான்றில்isDisabledஎன்பதன்மதிப்புட்ரூஅல்லதுஃபால்ஸ்எதுவாகஇருந்தாலும்பட்டன்டிஸேபிள்ஆகஇருக்கும்.

பிராப்பர்ட்டிபைண்டிங்கில்ஸ்கொயர்பிராக்கெட்டிற்குபதிலாக ‘bind-‘ என்றப்ரிபிக்ஸையும்பயன்படுத்தலாம்இதுஅதன்கெனானிக்கல்ஃபார்ம்எனப்படுகின்றது.

<button bind-disabled='isDisabled'>Click me</button>

ஆட்ரிபியூட்பைண்டிங்க்.

இதைப்பற்றிபார்ப்ப்தற்க்குமுன்நாம் html ஆட்ரிபியூட்மற்றும் DOM பிராப்பர்ட்டிஇரண்டிற்க்கும்உள்ளவித்தியாசம்தெரிந்துகொள்ளவேண்டும்.

டாம்என்பதுஎன்ன?

டாம்என்பதுடாக்குமெண்ட்ஆப்ஜெக்ட்மாடல்ஆகும்.பிரவுசர்ஒருHTMLபக்கத்தைலோட்செய்யும்பொழுதுஅதன்டாமையும்லோட்செய்கின்றது.

சான்று


இதன்டாம்.


 

 

 

எளியமுறையில்சொல்வதென்றால்டாம்ஆனதுஅப்ளிகேசன்புரோகிராமிங்க்இன்டெர்ஃபேஸ் (API) ஆகும்.

ஜாவாஸ்கிரிப்ட்அல்லதுஜாவாஸ்கிரிப்ட்ஃப்ரேம்வொர்க்கொண்டுஇந்த HTML ஐ  அதன்தொடர்பானடாம்உதவியுடன்ஆக்சஸ்மற்றும்மேனிபுலேட்செய்யலாம்.

Interpolation example
<button disabled='{{isDisabled}}'>Click Me</button>

Property binding example
<button [disabled]='isDisabled'>Click Me</button>

மேலேஉள்ளசான்றில்நாம்பட்டன்எலிமென்டின் disabled ஆட்ரிபியூட்டைபைண்ட்செய்ததுபோல்இருக்கும்.ஆனால்உண்மையில்பட்டன்ஆப்ஜெக்டின்பிராப்பர்ட்டியைபைண்ட்செய்திருக்கின்றோம்.

ஆங்குலர்டேட்டாபைண்டிங்க்என்பதுடாம்பிராப்பர்ட்டிபைண்டிங்கேதவிர html ஆட்ரிபியூட்பைண்டிங்க்கிடையாது.

Html எலிமெண்ட்ஆட்ரிபியூட்டிற்கும்டாம்பிராப்பர்ட்டிக்கும்உள்ளவித்தியாசங்கள்.

1.      ஆட்ரிபியூட்ஸ்ஹெச்டிஎம்எல்லால்டிஃபைன்செய்யப்படுகின்றது. பிராப்பர்ட்டிகள்டாமால்டிஃபைன்செய்யப்படுகின்றது.

2.      ஆட்ரிபியூட்ஸ்டாம்பிராப்பர்ட்டியைதொடக்குவிக்கின்றது.அத்துடன்ஆட்ரிபியூட்சின்பணிமுடிகின்றது.

3.      பிராப்பர்ட்டியின்மதிப்பைமாற்றலாம்.ஆட்ரிபியூட்டின்மதிப்பைமாற்றஇயலாது.

சில html எலிமெண்ட்ஆட்ரிபியூட்டிற்குஅதுதொடர்பானடாம்பிராப்பர்ட்டிஇருக்காதுஅந்தசூழ்நிலைகளில்நாம்ஆட்ரிபியூட்பைண்டிங்க்பயன்படுத்தலாம்.

உதாரணதிற்குடேபிள்டிடிஎலிமென்டின்colspanஆட்ரிபியூட்.

ஆங்குலர்எங்குடாம்பிராப்பர்ட்டிகிடையாதோஅங்குமட்டும்ஆட்ரிபியூட்பைண்டிங்கைஉபயோகப்படுத்தபயன்படுகின்றது.

கீழேஉள்ளபடத்தில்உள்ளவாறுடேட்டாகாட்சிபடுத்தவேண்டும்.


ரூட்காம்பனண்ட்-app.component.ts

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <div>

                    <my-employee></my-employee>

                </div>

             `

})

export class AppComponent {

}

employee.component.ts

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-employee',

    templateUrl: 'app/employee/employee.component.html',

    styleUrls: ['app/employee/employee.component.css']

})

export class EmployeeComponent {

    imagePath: string = 'Tom.png';

    firstName: string = 'Tom';

    lastName: string = 'Hopkins';

    gender: string = 'Male';

    age: number = 20;

}

employee.component.css நிரல்வரிகள்

table {

    color: #369;

    font-family: Arial, Helvetica, sans-serif;

    font-size: large;

    border-collapse: collapse;

}

 

td {

    border: 1px solid black;

}

thead{

    border: 1px solid black;

}

employee.component.html நிரல்வரிகள்.

<table>

    <thead>

        <tr>

            <thcolspan="2">

                Employee Details

            </th>

        </tr>

    </thead>

    <tbody>

        <tr>

            <td>First Name</td>

            <td>{{firstName}}</td>

        </tr>

        <tr>

            <td>Last Name</td>

            <td>{{lastName}}</td>

        </tr>

        <tr>

            <td>Gender</td>

            <td>{{gender}}</td>

        </tr>

        <tr>

            <td>Age</td>

            <td>{{age}}</td>

        </tr>

    </tbody>

</table>

இங்குcolspanஆட்ரிபியூட்ஹார்ட்கோட்செய்யப்பட்டுள்ளது. அதைஆட்ரிபியூட்பைண்டிங்க்மூலம்மேற்கொள்ளலாம்.

export class EmployeeComponent {

    columnSpan: number = 2;

    imagePath: string = 'Tom.png';

    firstName: string = 'Tom';

    lastName: string = 'Hopkins';

    gender: string = 'Male';

    age: number = 20;

}

 

<th [attr.colspan]="columnSpan">

அல்லது

<thattr.colspan="{{columnSpan}}">

கிளாஸ்பைண்டிங்க்

இப்பொழுதுcssகிளாஸ்களைஎவ்வாறுபைண்ட்செய்யலாம்என்றுபார்ப்போம்.

Style.css நிரல்வரிகள்.

.boldClass{

    font-weight:bold;

}

 

.italicsClass{

    font-style:italic;

}

 

.colorClass{

    color:red;

}

இப்பொழுதுapp.component.tsஃபைலில்ஒருபட்டன்எலிமெண்டைஆட்செய்துஅத்துடன்கிளாஸ்பைன்டிங்கைநிகழ்த்துவோம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button class='colorClass'>My Button</button>

              `

})

export class AppComponent {

}

 

ஏற்கனவேஉள்ளசிஎஸ்எஸ்கிளாஸ்களைநீக்கிவிட்டுபுதிதாகஒன்றுக்கும்மேற்பட்டகிளாஸ்கஸ்ளைபைண்ட்செய்வதுஎப்படிஎன்றுபார்ப்போம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button class='colorClass' [class]='classesToApply'>My Button</button>

              `

})

export class AppComponent {

    classesToApply: string = 'italicsClassboldClass';

}

 

காம்பனண்டில்classToApplyஎன்றொருபிராப்பர்ட்டிஉள்ளதுஅதுஇரண்டுஸ்டைல்கிளாஸ்களைகுறிக்கின்றது.

மேலே [class] என்றுகொடுத்துஅதுபைண்ட்செய்யபட்டுள்ளது. அதுமட்டுமல்லஅதுஏற்கனவேஉள்ள ‘colorclass’ என்பதைநீக்குகின்றது.

ngClassடைரெக்டிவ்மூலம்எளிதாகஒன்றுக்குமேற்பட்டகிளாஸ்களைசேர்க்கலாம்அல்லதுவிலக்கலாம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button class='colorClass' [ngClass]='addClasses()'>My Button</button>

             `

})

export class AppComponent {

    applyBoldClass: boolean = true;

    applyItalicsClass: boolean = true;

 

    addClasses() {

        let classes = {

            boldClass: this.applyBoldClass,

            italicsClass: this.applyItalicsClass

        };

 

        return classes;

    }

}

ஸ்டைல்பைண்டிங்க்:

இதில்இன்லைனில்ஸ்டைல்பைண்டிங்க்செய்யலாம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button style="color:red">My Button</button>

              `

})

export class AppComponent {

}

 

மேலேஉள்ளநிரலில்பட்டன்கலராகரெட்என்பதைஹார்ட்கோட்செய்துள்ளோம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button style='color:red'

                        [style.font-weight]="isBold ? 'bold' : 'normal'">My Button

                </button>

              `

})

export class AppComponent {

    isBold: boolean = true;

}

 

மேலேஉள்ளநிரலில்isBoldஎன்பதன்மதிப்பு true ஆருந்தால்பட்டன்ஃபாண்ட்வெய்ட்போல்ட்ஆகஇருக்கும். அல்லதுநார்மல்ஆகஇருக்கும்.

அதேபோன்றுஃபாண்ட்அளவையும்கீழ்காணும்நிரலில்உள்ளதுபோல்பைண்ட்செய்யலாம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `

                <button style='color:red'

                        [style.font-size.px]="fontSize">My Button

                </button>

              `

})

export class AppComponent {

    fontSize: number = 30;

}

ngStyleஎன்றடைரெக்டிவ்மூலம்ஒன்றுக்கும்மேற்பட்டஇன்லைன்ஸ்டைல்செய்யலாம்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: ` <button style='color:red' [ngStyle]="addStyles()">My Button</button>

                    `

})

export class AppComponent {

    isBold: boolean = true;

    fontSize: number = 30;

    isItalic: boolean = true;

 

    addStyles() {

        let styles = {

            'font-weight': this.isBold ? 'bold' : 'normal',

            'font-style': this.isItalic ? 'italic' : 'normal',

            'font-size.px': this.fontSize

        };

 

        return styles;

    }

}

 

ஈவண்ட்பைண்டிங்க்.

இப்பொழுதுடேட்டாவைஎப்படி html எலிமென்டில்இருந்துகாம்னண்டிற்குஎப்படிஃப்லோசெய்வதுஎன்றுபார்ப்போம். Html லில்நாம்ஒருபட்டனைகிளிக்செய்யலாம். ஒருடெக்ஸ்ட்பாக்சில்உள்ளீடுசெய்யலாம்அல்லதுஒருடிராப்டவுன்லிஸ்டில்ஒருஐட்டத்தைதேர்வுசெய்யலாம். இந்தநிகழ்வுகளைஎவ்வாறுகண்டறிகின்றது?

ஆங்குலர்ஈவண்ட்பைண்டிங்க்மூலம்இந்தஈவண்ட்ஏற்படும்பொழுதுஅறிவுறுத்தல்செய்யலாம்.

கீழேபட்டனின்கிளிக்ஈவண்ட்ஆனதுஒருமெத்தடுடன்பைண்ட்செய்யப்பட்டுள்ளது.

<button (click)="onClick()">Click me</button>

clickஎன்பதுஆர்டினரிபிராக்கெட்டிற்குள்குறிப்பிடப்பட்டுள்ளது.அதைதொடர்ந்து ‘=’ வருகின்றது. அதைதொடர்ந்துமெத்தடின்பெயர்குறிப்பிடப்பட்டுள்ளது. அதாவதுகிளிக்ஈவண்ட்ஏற்படும்பொழுதுonClick() என்றமெத்தட்அழைக்கப்படுகின்றது. இதுவேஈவண்ட்பைண்டிங்க்.

இதன்கெனானிக்கல்ஃபார்ம்(canonical form) பிராக்கெட்இல்லாமல் On- என்றப்ரிஃபிக்ஸ்மூலம்கீழ்காணும்முறையிலும்எழுதலாம்.

<button on-click="onClick()">Click me</button>

ஈவண்ட்பைண்டிற்கானசான்றுநிரல்.

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `<button (click)='onClick()' >Click me</button>`

})

export class AppComponent {

    onClick(): void {

        console.log('Button Clicked');

    }

}

import { Component } from '@angular/core';

 

@Component({

    selector: 'my-app',

    template: `<button (click)='onClick()' >Click me</button>`

})

export class AppComponent {

    onClick(): void {

        console.log('Button Clicked');

    }

}

 

இப்பொழுதுபட்டனைகிளிக்செய்யும்பொழுதெலெல்லாம் ‘Button clicked’ என்றுகன்சோலில்பிரிண்ட்செய்யப்படும்.


இவ்வாறுஆங்குலரில்பைண்டிங்குகள்செயற்படுகின்றன.

நன்றி.

முத்துகார்த்திகேயன்,மதுரை.

 

 

 

ads Udanz