有人可以建议我如何读取/绑定属性值到@component类,这似乎是在ngOnInit方法中未定义的?
这是一个有趣的演示: http://plnkr.co/edit/4FoFNBFsOEvvOkyfn0lw?p=preview
我想阅读" someattribute"的价值。属性
<my-app [someattribute]="'somevalue'">
在App类(src / app.ts)ngOninit方法中。
谢谢!
答案 0 :(得分:14)
您可以注意到此类参数不能用于根组件。有关详细信息,请参阅此问题:
解决方法包括利用ElementRef
类。它需要注入您的主要组件:
constructor(elm: ElementRef) {
this.someattribute = elm.nativeElement.getAttribute('someattribute');
}
我们需要在HTML文件中以这种方式使用组件:
<my-app someattribute="somevalue"></my-app>
答案 1 :(得分:12)
你应该使用@Input
装饰者。
这是一个例子:
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);
}
}
并使用它
<user-menu userName="John Doe"></user-menu>
答案 2 :(得分:4)
<强>更新强>
根组件不支持输入作为可以使用的解决方法
constructor(elementRef:ElementRef) {
console.log(elementRef.nativeElement.getAttribute('someattribute');
}
另见https://github.com/angular/angular/issues/1858
另见固定Plunker
<强>原始强>
您需要使用
[property]="value"
或
property="{{value}}"
或者如果它是属性
[attr.property]="value"
或
attr.property="{{value}}"