diff --git a/projects/components/src/multi-select/multi-select.component.ts b/projects/components/src/multi-select/multi-select.component.ts index fb6666335..0eb161c13 100644 --- a/projects/components/src/multi-select/multi-select.component.ts +++ b/projects/components/src/multi-select/multi-select.component.ts @@ -1,6 +1,7 @@ import { AfterContentInit, ChangeDetectionStrategy, + ChangeDetectorRef, Component, ContentChildren, EventEmitter, @@ -201,6 +202,8 @@ export class MultiSelectComponent implements ControlValueAccessor, AfterConte private propagateControlValueChange?: (value: V[] | undefined) => void; private propagateControlValueChangeOnTouch?: (value: V[] | undefined) => void; + public constructor(private readonly cdr: ChangeDetectorRef) {} + public ngAfterContentInit(): void { this.allOptions$ = this.allOptionsList !== undefined ? queryListAndChanges$(this.allOptionsList) : EMPTY; this.filteredOptions$ = combineLatest([this.allOptions$, this.searchSubject]).pipe( @@ -265,6 +268,7 @@ export class MultiSelectComponent implements ControlValueAccessor, AfterConte public writeValue(value?: V[]): void { this.setSelection(value ?? []); + this.cdr.markForCheck(); } public registerOnChange(onChange: (value: V[] | undefined) => void): void { diff --git a/projects/components/src/select/select.component.ts b/projects/components/src/select/select.component.ts index 6f48aa348..403fb53e9 100644 --- a/projects/components/src/select/select.component.ts +++ b/projects/components/src/select/select.component.ts @@ -252,10 +252,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni return this.showBorder ? SelectJustify.Left : SelectJustify.Right; } - public constructor( - private readonly loggerService: LoggerService, - private readonly changeDetector: ChangeDetectorRef - ) {} + public constructor(private readonly loggerService: LoggerService, private readonly cdr: ChangeDetectorRef) {} public ngAfterContentInit(): void { this.selected$ = this.buildObservableOfSelected(); @@ -282,7 +279,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni public updateGroupPosition(position: SelectGroupPosition): void { this.groupPosition = position; - this.changeDetector.markForCheck(); + this.cdr.markForCheck(); } public searchOptions(searchText: string): void { @@ -341,6 +338,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni public writeValue(value?: V): void { this.setSelection(value); + this.cdr.markForCheck(); } public registerOnChange(onChange: (value: V | undefined) => void): void { diff --git a/projects/components/src/textarea/textarea.component.ts b/projects/components/src/textarea/textarea.component.ts index edf4006a3..c1ef6ca38 100644 --- a/projects/components/src/textarea/textarea.component.ts +++ b/projects/components/src/textarea/textarea.component.ts @@ -1,4 +1,12 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + EventEmitter, + Input, + OnInit, + Output +} from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; import { LoggerService } from '@hypertrace/common'; @@ -44,7 +52,7 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { @Output() public readonly valueChange: EventEmitter = new EventEmitter(); - public constructor(private readonly loggerService: LoggerService) {} + public constructor(private readonly loggerService: LoggerService, private readonly cdr: ChangeDetectorRef) {} public ngOnInit(): void { // tslint:disable-next-line:strict-type-predicates @@ -64,6 +72,7 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { public writeValue(value?: string): void { this.value = value; + this.cdr.markForCheck(); } public registerOnChange(onChange: (value?: string) => void): void { @@ -74,6 +83,10 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { this.propagateControlValueChangeOnTouch = onTouch; } + public setDisabledState(isDisabled?: boolean): void { + this.disabled = isDisabled ?? false; + } + private propagateValueChangeToFormControl(value?: string): void { this.propagateControlValueChange?.(value); this.propagateControlValueChangeOnTouch?.(value);