Angular 2:无法通过两种方式绑定在自定义组件中工作

于连

我正在尝试制作一个显示开关按钮的简单 angular 2 组件。它几乎可以工作,除了在使用 ngModel 时不更新父值。

这是我的自定义组件:

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
selector: 'app-switch',
template:` 
<label class="switch">
  <input id="switch" type="checkbox" [(ngModel)]="checked">
  <div class="slider round"></div>
</label> `,   
styleUrls: ['./switch.component.css']
})
export class SwitchComponent {

    checkValue:boolean;
    @Output() checkChange = new EventEmitter();

    @Input()
    get checked() {
      return this.checkValue;
    }

    set checked(val) {
       this.checkValue = val;
       this.checkChange.emit(this.checkValue);
       console.log("from switch: value = " + this.checkValue);    
    }
}

这是带有我的自定义子组件的 2 个实例的父组件。- 第一个实例工作正常,但使用分离的属性 [] 和 event () 绑定 - 第二个实例使用两种方式绑定 [()] 但不起作用。知道我错过了什么吗?

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  template:`
  <app-switch [checked]="checkValue" (checkChange)="onCheckChanged($event)"></app-switch>
  <div>checkBox :<span>{{checkValue}}</span></div>
  <hr/>
  <app-switch [(checked)]="switchValue" ></app-switch>
  <div>checkBox :<span>{{switchValue}}</span></div>`,
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app works!';
  checkValue:boolean = false;
  switchValue:boolean = false;

  onCheckChanged($event){
    console.log("from AppComponent : " + $event);
    this.checkValue = $event;

  }
}

对此有何建议?

乔尔·韦马克

您的第二个实例将需要一个输出checkedChange事件发射器,因为您要绑定到该checked属性。命名稍微偏离 ( checkChangevs checkedChange),因此它不允许您设置的双向绑定。

演示在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular:子组件中自定义输入的2种方式的数据绑定

Angular2-组件变量/组件类属性上的两种方式数据绑定?

两种形式的数据绑定在Angular 2中不起作用

angular js中的两种方式数据绑定

Angular中JSON映射的两种方式绑定

Angular 2两种方式绑定从html输入标签中删除名称属性

Angular指令两种方式数据绑定失败

Angular-嵌套表单组中的两种方式绑定

Blazor - 为什么两种方式绑定适用于 List 而不是自定义组件中的 String?

自定义组件两种方式的数据绑定更新而不会发出事件

在 Angular 中自定义共享组件

2自定义验证器无法在Angular中以反应形式工作

自定义角度指令中的ng-switch打破了两种方式的绑定

Angular 自定义组件数据绑定

WordPress-尝试通过两种不同的方式显示自定义表单中的日期

自定义可重用组件的Angular2数据绑定

使用ngSanatize的HTML5音频和Angular两种方式绑定的问题

Angular.js指令与加载数据的两种方式绑定

Angular 5+ 组件通信的两种方式及可能出现的问题

这个关于自定义事件绑定的 Angular 2 教程到底是如何工作的?

如何通过Angular 5中的自定义蒙版强制绑定属性

转换器不转换回文本框,在自定义用户控件中不聚焦,通过两种方式绑定到文本属性

无法在 Angular 中导入我的自定义组件

Angular2:在组件视图中通过ngIf使用自定义时间

自定义管道在Angular 2中

自定义angular2表单输入组件,组件内部具有双向绑定和验证

无法导入自定义组件-Angular2和TypeScript

Angular 5 表单自定义验证无法正常工作

Angular 2绑定到自定义事件