angulardata-bindingproperty-binding

Angular 2: Difference between property binding with and without brackets?


I noticed it's possible to property bind stuff without brackets. What is the difference?

Typescript:

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

@Component( {
    selector: 'my-comp',
    templateUrl: `
    input is {{foo}}
  `

})
export class myComponent {
    @Input() public foo: string;

    constructor() { }
    }

HTML:

Case 1

<my-comp [foo]="bar"></my-comp>

Case 2

<my-comp foo="bar"></my-comp>

Solution

  • There are some Cases where we need to add like this html attributes dynamically might be and example which comes json from api request

    Case 1 [] known as Property Binding

    <my-comp [foo]="data.bar"></my-comp>
    

    Case 2 {{ }} known as Interpolation

    <my-comp foo="{{data.bar}}"></my-comp>
    

    Case 3 Conditional handling

    <my-comp [attr.foo]="data.bar ? true : false"></my-comp>
    

    Both {{ }} called as Interpolation and [] called as Property Binding means angular understand that there is One-way from data source to view target.

    For more visit www.codementor.io