Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 2 input parameters on root directive [duplicate]

This example shows how to use @Input() annotation on child components. My question is how do you use it on root component? For example if you modify code on the link above:

@Component({
selector: 'app',
template: `
    <bank-account bank-name="RBC" account-id="4747"></bank-account>
`,
directives: [BankAccount]
})
class App {
    @Input() something: string;
}

bootstrap(App);

And in html:

<app something="Test"></app>

The above example never updates something property on App component.

like image 253
redman Avatar asked Nov 10 '15 21:11

redman


2 Answers

I think you could still use:

class App {
    constructor(elm: ElementRef) {
        this.something = elm.nativeElement.getAttribute('something'); 
    }
}
like image 80
martin Avatar answered Nov 11 '22 20:11

martin


This Tobias Bosch's comment has answer on your question:

The reason why this is not working is that your index.html in which you place the <app something="Test"></app> is not an angular component. Because of this, Angular won't compile this element. And Angular does not read attribute values during runtime, only during compile time, as otherwise we would get a performance hit.

So, at this moment you can't use input parameters on root element.

like image 21
alexpods Avatar answered Nov 11 '22 19:11

alexpods