如何使用 [(ngModel)] 两种方式数据绑定在 Angular 4 中创建切换开关开关按钮

Posted

技术标签:

【中文标题】如何使用 [(ngModel)] 两种方式数据绑定在 Angular 4 中创建切换开关开关按钮【英文标题】:How to create toggle switch on-off buttons in Angular 4 with [(ngModel)] two way data binding 【发布时间】:2018-10-07 21:45:38 【问题描述】:

需要实现类似于所附图片的开关开关按钮...

【问题讨论】:

wisdomofjim.com/blog/… 可以帮助您入门。 material.angular.io/components/slide-toggle/overview 【参考方案1】:

您可以使用普通复选框和一些 css 来获得该功能。 下面是有用的代码。

CSS:

.switch 
  position: relative;
  display: inline-block;
  width: 45px;
  height: 20px;
  margin: 20px;


.switch input display:none; background-color: #ccc;

.slider 
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
   background-color: #ccc;
  -webkit-transition: .4s;
  transition: .4s;


.slider:before 
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 0px;
   right: 0px;
  bottom: -3px;
  background-color: #2196F3;
  -webkit-transition: .4s;
  transition: .4s;


input:checked + .slider:before 
  -webkit-transform: translateX(20px);
  -ms-transform: translateX(20px);
  transform: translateX(20px);


/* Rounded sliders */
.slider.round 
  border-radius: 20px;


.slider.round:before 
  border-radius: 50%;

html

<div class="row">
                <label>Yes</label>
                <label class="switch">
                <input type="checkbox" [(ngModel)]="isNewProfile">
                <span class="slider round"></span>
                </label>
                <label>No</label>
        </div>

【讨论】:

感谢您的解决方案。但是,有没有可能用 Bootstrap 的开关按钮来让它看起来很漂亮?并且 css 样式将类似于附加的图像【参考方案2】:

使用ngx-toggle-switch库

安装npm install ngx-toggle-switch --save

用法:-

import  UiSwitchModule  from 'ngx-toggle-switch';
import  AppComponent  from './app.component';

@NgModule(
  imports: [BrowserModule, UiSwitchModule],
  declarations: [AppComponent],
  bootstrap: [AppComponent]
)
export class AppModule 

在标记语言中:-

<ui-switch></ui-switch>

用于双向绑定

<ui-switch [(ngModel)]="enable"></ui-switch>

Packge文档请参考:-ngx-toggle-switch

【讨论】:

感谢您的解决方案。我不想使用您建议的任何第三方插件或库来实现它。是否可以使用 CSS 或使用 angular4 的引导切换开关来实现?? 有什么理由不使用第三方插件或库...? 没有具体原因,但是想尝试用开源bootstrap或者普通css实现

以上是关于如何使用 [(ngModel)] 两种方式数据绑定在 Angular 4 中创建切换开关开关按钮的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用

Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用

如何使用 ngModel 在 div 的 innerhtml 属性上实现 2 路数据绑定?

在 Angular 2 中,当我尝试使用两种方式绑定时,ngIF 不起作用

在 textarea 上使用 [(ngModel)] 绑定时如何避免 ExpressionChangedAfterItHasBeenCheckedError

*ngFor 如何使用索引将数组中的每个项目绑定到 ngModel