首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双向绑定ngStyle

双向绑定ngStyle
EN

Stack Overflow用户
提问于 2019-03-11 07:18:15
回答 2查看 227关注 0票数 0

每当我更改我的range value时,我都会尝试让ngStyle更改其left字段的值。

我的灵感来自于它是如何在https://codepen.io/mayuMPH/pen/ZjxGEY上完成的:但我找不到一种在angular6-7中做到这一点的方法。

只有在加载文档时,左侧的ngStyle值才会更改。但当我拖动范围时,它不能工作。如何实现rs-bullet跟随值?

html代码:

代码语言:javascript
复制
<div class="container">
  <div class="range-slider">
    <span id="rs-bullet" [ngStyle]="{'left':RangePos}"   (change)="changeZoom()" class="rs-label" >{{ rangeValue }}</span>
    <input id="rs-range-line" [(ngModel)]="rangeValue" class="rs-range" type="range" value="0" min="0" max="100">

  </div>

  <div class="box-minmax">
    <span>0</span><span>200</span>
  </div>



</div>

组件:

代码语言:javascript
复制
  rangeValue = 0;
  RangePos = ((40 / 1000) * 578) + 'px';

  ngOnInit() {






  }

  changeZoom() {
    this.RangePos = ((this.rangeValue / 1000) * 578) + 'px';
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-11 07:43:27

您不能在span上使用change,因为它上没有这样的事件。实际上,您甚至不需要它,因为ngModel应该处理所有的更改。

因此,要使您的示例工作,您只需更改

代码语言:javascript
复制
changeZoom() {
    return ((this.rangeValue / 1000) * 578) + 'px';
}

代码语言:javascript
复制
<span id="rs-bullet" [ngStyle]="{'left': changeZoom()}" 
      class="rs-label" >{{ rangeValue }}
</span>

同样,你的例子中的除法器1000是不正确的,因为你输入的范围最大值是100。

在这里您可以看到您的示例,在Angular:https://stackblitz.com/edit/angular-66fr5v中工作。

请确保已将FormsModule添加到应用程序模块。否则ngModel将无法工作。

票数 1
EN

Stack Overflow用户

发布于 2019-03-11 07:30:38

你能尝试设置一个函数来像这样绑定样式吗?

代码语言:javascript
复制
<span id="rs-bullet" [ngStyle]="setRangePosStyles(RangePos)" (change)="changeZoom()" class="rs-label" >{{ rangeValue }}</span>

组件:

代码语言:javascript
复制
setRangePosStyles(RangePos){
        return {'left':RangePos};
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55093379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档