【问题标题】:Can't bind to style.clip-path in angular 4无法绑定到角度 4 中的 style.clip-path
【发布时间】:2018-01-21 17:59:25
【问题描述】:

我在 Angular 4 中有一个简单的组件,如下所示:

HTML

<div [style.clip-path]="shape" [style.background-color]="color"</div>

我添加到 .ts 文件中的唯一内容是:

 color = 'green';
 shape = 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)';

有一些样式使div 400 像素 x 400 像素。 当我提供此代码时,我看到一个绿色框,这意味着样式绑定至少对background-color 有效。然而,盒子仍然是一个正方形,而不是我定义的五边形。 clip-path 似乎设置不正确。

更奇怪的是,我还是用 Angular 2 测试了它,它按预期运行。

是否从 Angular 2 -> Angular 4 发生了一些变化,拒绝绑定到特定的样式属性?

【问题讨论】:

    标签: html css angular clip-path


    【解决方案1】:

    它不工作,因为它正在被清理。

    您需要使用DomSanitizer。来自文档:

    调用任何bypassSecurityTrust... API 都会禁用 Angular 对传入值的内置清理。仔细检查和审核进入此调用的所有值和代码路径。确保针对此安全上下文适当地转义了任何用户数据。更多详情,请参阅Security Guide

    所以,注入DomSanitizer 并使用bypassSecurityTrustStyle

    private _polygon = 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)';
    
    public get polygon() {
       return this.sanitizer.bypassSecurityTrustStyle(this._polygon);
    }
    
    constructor(private sanitizer: DomSanitizer) { }
    

    【讨论】:

    • 这完全解决了这个问题,你会认为会有某种日志记录解决这个问题
    • 登录控制台。
    • 哦,对了,它只是没有标记为红色,就好像它是一个错误一样。
    猜你喜欢
    • 2018-05-07
    • 2021-08-11
    • 2017-11-19
    • 2018-06-09
    • 1970-01-01
    • 2018-03-18
    • 2017-12-06
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多