私は、2つのテキストの間にイオントグルを備えた、正式に機能するカスタムテンプレートを持っています。変更イベントをキャッチするにはどうすればよいですか? これは短縮されたコード例です:
カスタム形式のアイデア:
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 と change イベントを試してみましたが、動作しませんでした。値自体がないことが問題になる可能性があると思いますが、それをカスタム トグルに追加する方法がわかりません。おそらく to.checked change のような属性を取得する方法は何でもいいでしょう。何か案が?