【发布时间】:2017-07-29 21:37:02
【问题描述】:
我正在尝试在 Angular 2 中创建条件属性,我也在使用 Ionic 2。 我有一个输入,我想控制(我认为是一个属性)
当我不尝试有条件地绑定它时,我的代码工作正常:
<ion-label stacked color="primary">{{label}}</ion-label>
现在我改变了我的组件以接受一个新的 Input isStacked,如果它是堆栈,我有一个函数来返回字符串:
@Input() isStacked: boolean = true;
stackedDisplay(): string {
return this.isStacked? "stacked" : '';
}
我将 Ion 标签更新为如下所示:
<ion-label {{stackedDisplay()}} color="primary">{{label}}</ion-label>
当我这样做时,我得到一个错误:
在“元素”上执行“setAttribute”失败:“{{stackedDisplay()}}”不是有效的属性名称。
我查看了其他一些关于此的问题,他们说要使用 attr 绑定:
<ion-label [attr.stacked]='isStacked' color="primary">{{label}}</ion-label>
当我这样做时,绑定也失败了,有人可以告诉我如何有条件地绑定这个属性吗?
【问题讨论】:
-
最后一个是好的。抛出的错误是什么?
-
Angular 目前不支持动态指令:有关更多信息,请参阅 the comments on this question
-
看起来
ion-label指令只读取其构造函数中的属性。所以 emil 的解决方案可能是你唯一的选择。 github.com/ionic-team/ionic/blob/master/src/components/label/… -
谢谢! @0mpurdy 这也适用于模板,例如动态地将子指令添加到离子列表控件,因为这解释了我遇到的另一个问题
标签: javascript angular typescript ionic2