DataBinding in Angular
  §  Data
binding is the mechanism for coordinating between the Template (DOM) and           Component (Property).
     §  Data
binding means data flowing from component to template or data flowing template      to component.
     §  Data
binding plays an important role in communication between a template and its    component, and is also important for communication between parent and child     components.
     §  In
Angular data-binding can be broadly classified into 3 categories.
 
  | Data
  Binding   | Description   | 
 
  | One-way data-binding | From Component to View Template | 
 
  | One-way data-binding | From View Template to Component
   | 
 
  | Two-way data-binding | From Component to View Template & From View template to Component | 
  v 
One-way
data-binding
   §  we
will discuss the first one-way data-binding i.e. From Component to View
Template. We achieve this using interpolation
  §  Interpolation
is a way of all about data binding.
     §  Suppose
We create a new property in the AppComponent class and let's call it
title and     assignment the string.
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Angular-Interpolation-Demo';
}
§  So
now how do we get this title property value into template(app.component.html)
file.
§  The
answer is {{}} double curly braces and inside the {{}} double
curly braces the specified the property in our case it is the title
property and the syntax of a property or an expression within curly braces is
known as interpolation in angular {{propertyName}}
or{{expression}}.
§  By
using interpolation, we are asking angular to evaluate the content inside the double
curly braces and display the value when the component is rendered in the
browser.
§  Using
interpolation technique we can read data on a view template from Component, we
place the component property name in the view template, enclosed in double
curly braces: {{propertyName}}.
Example:-
§  In
Component class(app.component.ts) file we define two property named siteName, siteUrl.now we try to
access component class property into template(app.component.html)file.
import {Component} from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
siteName="Angular-InterPolation-Demo";
siteUrl=window.location.href;  
}
Site-Name: {{siteName}} <br/>
Site-URL: {{siteUrl}}
§  You
can specify any valid expression in double curly braces also. For example, you
can have
Sum= {{100+200+300}}
§ The
above expression evaluates to 600
 
§ The
expression that is enclosed in double curly braces is commonly called as
Template Expression.
§ You
can also use interpolation to set <img> src as shown in the example
below.
§  Creating
images folder: We will place all the images that we are going to use in
"images" folder. We will have the images folder in the
"assets" folder. So, add a new folder in the "assets"
folder and name its "images" and copy the following 3 images. Name
the images virat.png, rohit.png and sachin.png.
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  player1:string="Sachin Ramesh Tendulkar";
  player2:string="Virat Kohli";
  player3:string="Rohit Gurunath Sharma";
  player1photoPath:string="assets/images/sachin.png";
  player2photoPath:string="assets/images/virat.png";
  player3photoPath:string="assets/images/rohit.png";
}
<table border="5px solid black">
    <tr>
      <th>Player-Name</th>
      <th>Player-Image</th>
    </tr>
    <tr>
      <td>{{player1}}</td>
      <td> <img src='{{player1photoPath}}'/></td>
    </tr>
    <tr>
      <td>{{player2}}</td>
      <td> <img src='{{player2photoPath}}'/></td>
    </tr>
    <tr>
      <td>{{player3}}</td>
      <td> <img src='{{player2photoPath}}'/></td>
    </tr>
  </table>
We can also call class methods using interpolation
as shown below.
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  fullName:string="Sachin Ramesh Tendulkar";
  age:number=46 ;
  gender:string="Male";
  photoPath:string="assets/images/sachin.png";
  getDetails():string{
    return this.fullName+ ' '+this.age+' '+this.gender;
  }
}
app.component.html
<img src='{{photoPath}}'/><br/>
<p>{{'Player-Details:'+getDetails()}}</p>
Output:-
  v You
can also use interpolation to  be a
ternary operator as shown in the example  below 
    v Double curly braces contain template expressions
which allow us to read primitive or object values from component properties.You
can also use interpolation to  be a
ternary operator as shown in the example below.
app.component.ts
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  heading = 'PLayer Details';
 //creating an object 
  player:any={
   fullName:"Sachin Ramesh Tendulkar",
   age:46,
   gender:"Male",
   country:"India"
 }
}
app.component.html
<h2>{{heading}}</h2>
<p>
  Name: {{player.gender === 'Male' ? 'Mr.' : 'Ms.'}}
  {{player.fullName }}
</p>
<p>Age: {{player.age}}</p>
<p>Contury: {{player.country}}</p>
Now we are using angular material table for designing following template.

§  So first add angular material in our project by
following command
§  ng add @angular/material
  §  Now we open Terminal in VSCode
    §  To open Terminal in VSCode go to view menu and click
on it and select Integrated Terminal
 
The ng add command will additionally perform the
following configurations:
§  Add project dependencies to package.json.
§  Add the Roboto font to your index.html.
§  Add the Material Design icon font to your index.html.
§  Add a few global CSS styles to:
§  Remove margins from body
§  Set height: 100% on html and body
§  Set Roboto as the default application font
§  The ng add command will install Angular Material,
the Component Dev Kit (CDK), Angular Animations and ask you the following
questions to determine which features to include:
§  Choose a prebuilt theme name, or "custom"
for a custom theme:
You can choose from prebuilt material design themes or set up an
extensible custom theme
Set up browser animations for Angular Material:
§  Importing the BrowserAnimationsModule into your
application enables Angular's animation system.
§  So When we add angular material in our project then
in app module (app.module.ts)file  BrowserAnimationsModule
is imported and added in import’s array.
§  Open the app.module.ts file and check here.
app.component.ts
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  //declaring players property as an array
  //players property container array of player object
  players=
  [
    {
      name:'Sachin Ramesh Tendulkar',
      photoPath:'assets/images/sachin.png'
    },
    {
      name:'Virat Kohli',
      photoPath:'assets/images/virat.png'
    },
    {
      name:'Rohit Gurunath Sharma',
      photoPath:'assets/images/rohit.png'
    }
  ];
  //list of columns
  displayedColumns:string[]=['name','photoPath'];
}
app.component.html
<table mat-table [dataSource]="players" class="mat-elevation-z8">
    <!--- Note that these columns can be defined in any order.
          The actual rendered columns are set as a property on the row definition" -->
  
    <!-- Name Column -->
    <ng-container matColumnDef="name">
      <th mat-header-cell *matHeaderCellDef> Name. </th>
      <td mat-cell *matCellDef="let player"> {{player.name}} </td>
    </ng-container>
  
    <!-- Image Column -->
    <ng-container matColumnDef="photoPath">
      <th mat-header-cell *matHeaderCellDef> Image </th>
      <td mat-cell *matCellDef="let player"> <img src="{{player.photoPath}}"/>  </td>
    </ng-container>
  
    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
  </table>
app.component.css
Author Name
Author Description!
Get Free Email Updates to your Inbox!
 
 
Post a Comment