File

projects/rebirth-ng/src/lib/checkbox-group/checkbox.component.ts

Implements

ControlValueAccessor

Metadata

changeDetection ChangeDetectionStrategy.OnPush
exportAs checkbox
host {
}
providers { : , : (() => ), : true }
selector re-checkbox
styleUrls checkbox.component.scss
templateUrl ./checkbox.component.html

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor(changeDetectorRef: ChangeDetectorRef)
Parameters :
Name Type Optional
changeDetectorRef ChangeDetectorRef no

Inputs

checkedValue

Type: any

Default value: true

cssClass

Type: string

disabled

Default value: false

label

Type: string

unCheckedValue

Type: any

Default value: false

Outputs

valueChange $event type: EventEmitter

Methods

isChecked
isChecked()
Returns : boolean
onCheckBoxChange
onCheckBoxChange(checkbox: )
Parameters :
Name Optional
checkbox no
Returns : void
registerOnChange
registerOnChange(fn: any)
Parameters :
Name Type Optional
fn any no
Returns : void
registerOnTouched
registerOnTouched(fn: any)
Parameters :
Name Type Optional
fn any no
Returns : void
setDisabledState
setDisabledState(isDisabled: boolean)
Parameters :
Name Type Optional
isDisabled boolean no
Returns : void
writeValue
writeValue(obj: any)
Parameters :
Name Type Optional
obj any no
Returns : void

Properties

Private onChange
onChange:
Default value : (_: any) => null
Private onTouched
onTouched:
Default value : () => null
value
value: any
Type : any
import {
  Component, ChangeDetectionStrategy, Input, ChangeDetectorRef, forwardRef, Output,
  EventEmitter
} from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';

@Component({
  selector: 're-checkbox',
  templateUrl: './checkbox.component.html',
  styleUrls: ['./checkbox.component.scss'],
  changeDetection: ChangeDetectionStrategy.OnPush,
  exportAs: 'checkbox',
  host: { '[class]': '(cssClass ? cssClass : "") + " checkbox"' },
  providers: [{
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => CheckboxComponent),
    multi: true
  }]
})
export class CheckboxComponent implements ControlValueAccessor {
  @Input() disabled = false;
  @Input() cssClass: string;
  @Input() label: string;
  @Input() checkedValue: any = true;
  @Input() unCheckedValue: any = false;
  @Output() valueChange = new EventEmitter<any>();
  value: any;
  private onChange = (_: any) => null;
  private onTouched = () => null;

  constructor(private changeDetectorRef: ChangeDetectorRef) {

  }

  writeValue(obj: any): void {
    this.value = obj;
    this.changeDetectorRef.markForCheck();
  }

  registerOnChange(fn: any): void {
    this.onChange = fn;
  }

  registerOnTouched(fn: any): void {
    this.onTouched = fn;
  }

  setDisabledState(isDisabled: boolean): void {
    this.disabled = isDisabled;
  }

  onCheckBoxChange(checkbox) {
    this.onTouched();
    if (checkbox.checked) {
      this.value = this.checkedValue;
    } else {
      this.value = this.unCheckedValue;
    }
    this.onChange(this.value);
    this.valueChange.emit(this.value);
  }

  isChecked() {
    return this.value === this.checkedValue;
  }
}
<label>
  <input #checkbox type="checkbox" [checked]="isChecked()" [disabled]="disabled"
         (change)="onCheckBoxChange(checkbox)">{{label}}
</label>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""