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 = () => { }
}