【问题标题】:Angular translate on custom attributes自定义属性的角度翻译
【发布时间】:2018-02-19 12:02:01
【问题描述】:

我有一个开关小部件,它使用自定义数据属性值来标记自己。

.switch.switch-text .switch-label::before {
  right: 1px;
  color: #c2cfd6;
  content: attr(data-hide);
  }
  
  .switch.switch-text .switch-label::after {
  left: 1px;
  color: #c2cfd6;
  content: attr(data-show);
  opacity: 0;
}

.switch.switch-text .switch-input:checked ~ .switch-label::before {
  opacity: 0;
}

.switch.switch-text .switch-input:checked ~ .switch-label::after {
  opacity: 1;
}
<label class="switch switch-text switch-pill switch-primary">
                            <input type="checkbox" class="switch-input" checked>
                            <span class="switch-label" attr.data-show="{{GLOBALS.ACTIONS.SHOW | translate}}" attr.data-hide="{{GLOBALS.ACTIONS.HIDE | translate}}"></span>
                            <span class="switch-handle"></span>
                        </label>

但它只是不起作用。我已经查看了与类似问题相关的不同答案,但有些人说它有效,有些人说它没有。如果我没有 attr 的用户。在前面我得到一个绑定错误,因为它无法识别该属性。

如何使用角度翻译来翻译自定义属性的值?

【问题讨论】:

    标签: angular angular-translate custom-attribute


    【解决方案1】:

    您的模板中只是有一个错字。您必须使用单向数据绑定语法来使用翻译后的值更新属性“data-show”。如果省略括号,则只需创建一个静态“attr.data-show”属性,其值为“{{GLOBALS.ACTIONS.SHOW | translate}}

    您的代码生成:

    <span class="switch-label" attr.data-show="{{GLOBALS.ACTIONS.SHOW | translate}}" attr.data-hide="{{GLOBALS.ACTIONS.HIDE | translate}}"></span>
    

    更正的模板语法是:

      <label class="switch switch-text switch-pill switch-primary">
            <input type="checkbox" class="switch-input" checked>
            <span class="switch-label" [attr.data-show]="'GLOBALS.ACTIONS.SHOW' | translate" [attr.data-hide]="'GLOBALS.ACTIONS.HIDE' | translate"></span>
            <span class="switch-handle"></span>
       </label>
    

    【讨论】:

    • 好的,谢谢,我没有收到错误,所以这是件好事。但仍然没有出现文字。我的 .ts 文件中没有任何内容我必须定义它们吗?我们通常包括翻译,它适用于字符串。但在这种情况下,angular 会不会在默认情况下拾取这些属性?
    • 好吧,我想我意识到我也需要创建指令装饰。我刚刚检查了它需要什么。我只是这个角度 2+ 的新手,并且还试图更改另一个开发人员的代码以适应开关复选框。
    • @tekin 您的 CSS 指令的不透明度为:0。您是否尝试删除它?
    • 是的,我找不到那个,因为这些不是真正的自定义属性,而是 html 数据属性,所以我如何从组件端绑定它们?
    • 嗨 Pierre,抱歉 CSS 不完整,它根据需要显示的消息转换不透明度,一个变为 1,另一个变为 0。但会检查两者是否都为 0。
    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多