Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Component({
- selector: 'my-checkbox',
- templateUrl: './my-checkbox.component.html',
- styleUrls: ['./my-checkbox.component.less'],
- providers: [
- {
- provide: NG_VALUE_ACCESSOR,
- useExisting: forwardRef(() => MyCheckboxComponent),
- multi: true
- }
- ]
- })
- export class MyCheckboxComponent implements OnInit, ControlValueAccessor {
- @Input() formControlName: string;
- @Input() checked: boolean = false;
- @Input() indeterminate: boolean = false;
- @Input() disabled: boolean = false;
- public control: AbstractControl;
- private innerValue: any = '';
- private controlContainer: ControlContainer;
- private onTouchedCallback: () => void = noop;
- private onChangeCallback: (_: any) => void = noop;
- constructor(
- @Optional()
- @Host()
- @SkipSelf()
- private _controlContainer: ControlContainer
- ) {
- this.controlContainer = _controlContainer;
- }
- ngOnInit() {
- this._getFormControl();
- }
- private _getFormControl() {
- if (this.controlContainer) {
- if (this.formControlName) {
- this.control = this.controlContainer.control.get(this.formControlName);
- }
- }
- }
- get value(): any {
- return this.innerValue;
- }
- set value(v: any) {
- if (v !== this.innerValue) {
- this.indeterminate = false;
- this.innerValue = v;
- this.onChangeCallback(v);
- }
- }
- onBlur() {
- this.onTouchedCallback();
- }
- writeValue(value: any) {
- if (value !== this.innerValue) {
- this.innerValue = value;
- }
- }
- registerOnChange(fn: any) {
- this.onChangeCallback = fn;
- }
- registerOnTouched(fn: any) {
- this.onTouchedCallback = fn;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement