微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 正式 5.10.3 自定义切换事件更改

如何解决Angular 正式 5.10.3 自定义切换事件更改

我有一个正式的自定义模板,带有两个文本之间的离子切换。如何捕捉更改事件?这是一个简化的代码示例:

自定义形式的想法:

import { Component } from '@angular/core';
import { FieldType } from '@ngx-formly/core';

@Component({
 selector: 'formly-field-input',template: `
   <span class="toggleContainer">
      <p [class]="to.checked ? '' : 'toggleSelected'"> {{ to.textBefore }} </p>
      <ion-toggle 
        [checked]="to.checked" 
        [disabled]="to.disabled" 
        color="primary">
      </ion-toggle>
      <p [class]="to.checked ? 'toggleSelected' : ''"> {{ to.textAfter }} </p>
   </span>
 `,styleUrls: ['./toggle-2-labels.component.scss'],})
export class toggle2LabelsComponent extends FieldType { }

添加到表单的输入:

 {
    key: 'exampleName',type: 'toggle2Labels',wrappers: ['acc-wrapper'],templateOptions: {
        disabled: true,checked: false,textBefore: 'something',textAfter: 'something',onChange: (field,value) => console.log('onChange'),change: (field,$event) => {
            console.log('change');
        },},hooks: {
        onInit: (field: FormlyFieldConfig) => {
            //Other stuff
        },}
 },

我尝试使用 onChange 和更改事件但没有工作。我认为这可能是一个本身没有值的问题,但我不知道如何将它添加到我的自定义切换中。也许任何类型的方法获取像 to.checked 更改这样的属性都可以。有什么想法吗?

解决方法

您需要的属性称为 ionChange。由于这是一个离子框架元素,仅使用约定默认值并不能保证工作。

template: `
   <span class="toggleContainer">
      <p [class]="to.checked ? '' : 'toggleSelected'"> {{ to.textBefore }} </p>
      <ion-toggle 
        (ionChange)="() => console.log('onChange')"
        [checked]="to.checked" 
        [disabled]="to.disabled" 
        color="primary">
      </ion-toggle>
      <p [class]="to.checked ? 'toggleSelected' : ''"> {{ to.textAfter }} </p>
   </span>
 `,
,

Html 文件

<span class="toggleContainer">
      <p [class]="to.checked ? '' : 'toggleSelected'">{{ to.textBefore }}</p>
      <ion-toggle
        (ionChange)="changeToggle($event)"
        [checked]="to.checked"
        [disabled]="to.disabled"
        color="primary"
      >
      </ion-toggle>
      <p [class]="to.checked ? 'toggleSelected' : ''">{{ to.textAfter }}</p>
    </span>

ts 文件

public to = {
    checked: false,disabled: false,textBefore: 'something',textAfter: 'something'
  };
  changeToggle(event: any) {
    console.log(event.value);
    this.to.checked = event.value;
  }
,

最后我明白了,原来的 onChangechange 事件不适用于自定义输入(它们也不适用于正式的指南示例),所以我的解决方案是获得 {自定义输入模板上的 {1}} 事件,在 init 上有一个钩子,就像示例一样;

正式定制:

(ionChange)

自定义输入

import { Component } from '@angular/core';
import { FieldType } from '@ngx-formly/core';

@Component({
 selector: 'formly-field-input',template: `
   <span class="toggleContainer">
      <p [class]="to.checked ? '' : 'toggleSelected'"> {{ to.textBefore }} </p>
      <ion-toggle 
        <ion-toggle 
          [formControl]="formControl" 
          [formlyAttributes]="field"
          [value]="to.checked"
          [checked]="to.checked" 
          [disabled]="to.disabled" 
          (ionChange)="formControl.setValue(to.checked)"
        color="primary">
        color="primary">
      </ion-toggle>
      <p [class]="to.checked ? 'toggleSelected' : ''"> {{ to.textAfter }} </p>
   </span>
 `,styleUrls: ['./toggle-2-labels.component.scss'],})
export class toggle2LabelsComponent extends FieldType { }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?