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!
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>
You should use @Input
decorator.
This is an example:
import { Component, Input } from '@angular/core';
@Component({
selector: 'user-menu',
templateUrl: 'user-menu.component.html',
styleUrls: ['user-menu.component.scss'],
})
export class UserMenuComponent {
/**
* userName Current username
*/
@Input('userName') userName: string;
constructor() {
}
sayMyName() {
console.log('My name is', this.userName);
}
}
And to use it
<user-menu userName="John Doe"></user-menu>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With