Home > Software engineering >  How to assign <ng-select [multiple]=isMultiple varibale dynamically?
How to assign <ng-select [multiple]=isMultiple varibale dynamically?

Time:05-03

I need to change a select box behavior dynamically. The below approach is not working, because this variable we cannot set dynamically after calling a service. The component will initialize before the service getting triggered. Any workaround we have for such situations?

    <ng-select
             [multiple]=isMultiple
    
    
    ngOnInit(){
        this.testService.isMultiple().subscribe(
            (isMultiple: boolean): void => {
        this.isMultiple = true;
        }
    }

CodePudding user response:

Trigger manual change detection using ChangeDetectorRef.

The value to the isMultiple is assigned from asynchronous operation, which takes some time for the completion of async operation and retrieval of results. So, the angular fails to auto-detect the change of isMultiple. In such cases, we have to manually trigger the change detection once the asynchronous operation has been completed.

import {ChangeDetectorRef} from "@angular/core";

@Component({...})
export class [className] {
  constructor( private _cdref: ChangeDetectorRef ) {}
    
  ngOnInit(){
    this.testService.isMultiple().subscribe(
      (isMultiple: boolean): void => {
        this.isMultiple = true;
        this._cdref.detectChanges();
    }
  }
}
  • Related