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)
Here is brief description of all situation:

When you use square brackets, the right hand side is an expression. When you use no brackets at all, the right hand side is a constant.

So will assign 'constant' string to my-tag's input. To achieve the same effect with square brackets: notice the single quote inside. If you didn't put single quote there, my-tag's input will be tied to its parent component's (where you write this template) property or template variable (like ngFor's let-constant for example) named "constant".

form here [What is the difference between property binding and just a regular attribute](https://www.reddit.com/r/Angular2/comments/5u1h1b/what_is_the_difference_between_property_binding/)