我有一个这样写的组件:
@Component({
selector: 'ams-text',
templateUrl: './text.component.html',
styleUrls: ['./text.component.scss']
})
export class TextComponent extends ElementBase<string> {
constructor(
@Attribute("name") public name : string,
@Attribute("label") public label : string,
) {}
}
<ams-text name="someName_{{ someNumber }}" label="{{someLabel}}"></ams-text>
Angular2抛出此错误:
Template parse errors: Can't bind to 'label' since it isn't a known property of 'ams-text'.
1. If 'ams-text' is an Angular component and it has 'label' input, then verify that it is part of this module.
2. If 'ams-text' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schemas' of this component to suppress this message.
一般来说,我不需要绑定到名称或标签,因为它们在组件的生命周期内不会改变。我可能想使用插值从变量初始化它们,但当它们在屏幕上时,该变量不会改变其值。这正是插值给我带来的。
@Input
因为将静态文本与
@Inputs
.
最后,它对名称属性中的插值没有问题。如果我从label属性中删除插值,它不会抱怨名称,实际上正如我所期望的那样工作。
<ams-text name="someName_{{someNumber}}" attr.label="{{someLabel}}"></ams-text>
<ams-text name="someName_{{someNumber}}" attr-label="{{someLabel}}"></ams-text>
没有成功。
那么为什么我不能在声明为
@Attribute
在组件上?我能修一下吗?