Angular2, TypeScript, How to read/bind attribute value to component class (undefined in ngOnInit)

Tomino picture Tomino · Feb 25, 2016 · Viewed 52k times · Source

can someone please advice me how to read/bind attribute value to @component class, which seems to be undefined in ngOnInit method?

Here's a plunker demo: http://plnkr.co/edit/4FoFNBFsOEvvOkyfn0lw?p=preview

I'd like to read value of "someattribute" attribute

<my-app [someattribute]="'somevalue'">

inside the App class (src/app.ts) ngOninit method.

Thanks!

Answer

Thierry Templier picture Thierry Templier · Feb 25, 2016

You can notice that such parameters can't be used for root component. See this question for more details:

The workaround consists in leveraging the ElementRef class. It needs to be injected into your main component:

constructor(elm: ElementRef) {
  this.someattribute = elm.nativeElement.getAttribute('someattribute'); 
}

We need to use the component this way in the HTML file:

<my-app someattribute="somevalue"></my-app>