import { Component, OnInit, Input, Output, EventEmitter, forwardRef, HostBinding } from '@angular/core'; import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms'; import { IdService } from '@farris/ui-common'; @Component({ selector: 'farris-radio-group', template: `
`, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true, }], styles: [` `], }) export class RadioGroupComponent implements OnInit, ControlValueAccessor { /* radio 类型 */ @Input() type: string; /* 初始化 radio 的值 */ @Input() model: any; @Input() name: string; @Input() horizontal: boolean; @Output() modelChange = new EventEmitter(); // tslint:disable-next-line:ban-types subscriber: Function[] = []; constructor(private idSer: IdService) { } ngOnInit() { this.name = this.idSer.generate().replace(/-/g, '_'); } changeModel(value: any) { this.model = value; this.modelChange.emit(this.model); this.controlChange(value); } writeValue(value: any): void { this.model = value; this.changeModel(this.model); } registerOnChange(fn: Function): void { this.controlChange = fn } registerOnTouched(fn: Function): void { this.controlTouch = fn } private controlChange: Function = () => { } private controlTouch: Function = () => { } }