【问题标题】:Dynamically set attribute on component in html template angular 2在html模板角度2中动态设置组件的属性
【发布时间】:2016-09-26 15:45:28
【问题描述】:

如果某个表达式为真,我正在尝试在组件上设置一个属性。有人可以给我一个例子吗?

我现在拥有的:

 <div [danger]="inArray(choice.likers, user, id)"></div>

但这不会编译。

inArray 是我自己的方法,它返回真或假。 我想看到的是,如果表达式返回true,输出将是

<div danger></div>

在 angular 1 中有这样的:ng-attr-... 完全符合上述要求的语句。

【问题讨论】:

    标签: data-binding angular angular2-template


    【解决方案1】:

    要设置属性,请使用 attribute binding

     <div [attr.danger]="inArray(choice.likers, user, id)"></div>
    

    如果你想在inArray()中有条件地显示一个空属性返回空字符串或null:

    inArray() {
        let value;
        if (isInArray) {
          value = '';
        } else {
          value = null;
        }
        return value;
      }
    

    所以属性将为空或危险属性不存在。结果是:

    <div danger></div>
    

    【讨论】:

    • 感谢您的评论 muetzerich。此代码允许我动态设置属性的值,但我想要实现的是设置属性本身。
    • 澄清一下:您的代码的输出是:danger="true",但我只想设置属性而不给它一个值。
    • 试试这个 [attr.danger]="inArray(choice.likers, user, id) ? true : null" -> null 删除危险属性
    • 我很抱歉,但仍然是同样的问题:danger="true"。似乎这不适用于属性。尽管我在文档中找到了一个确实有效的示例 [已禁用]。我会尝试创建一个 plunkr。
    • 一个空字符串 '' 而不是 true 似乎可以解决问题。谢谢!
    猜你喜欢
    • 2023-03-26
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2016-11-07
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多