如何动态分配 <ng-select [multiple]=is Multiple 变量?

How to assign <ng-select [multiple]=isMultiple varibale dynamically?

我需要动态更改 select 框行为。下面的方法不起作用,因为我们不能在调用服务后动态设置这个变量。该组件将在服务被触发之前初始化。对于这种情况,我们有什么解决方法吗?

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

使用 ChangeDetectorRef 触发手动更改检测。

isMultiple 的值是从 asynchronous 操作分配的,这需要一些时间来完成异步操作和检索结果。所以,angular 无法 auto-detect isMultiple 的变化。在这种情况下,我们必须在异步操作完成后手动触发 change detection

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();
    }
  }
}