Question: 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>

```

Answer: 
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](https://www.codementor.io/adekunleoyaniyi/interpolation-vs-property-binding-in-angular2-eu1tzbyn4)
**From Docs - [Remember the brackets](https://angular.io/guide/template-syntax#remember-the-brackets):**

> 
> The brackets, [], tell Angular to evaluate the template expression. If you omit the brackets, Angular treats the string as a constant and initializes the target property with that string.
> 
> 
>