如何使用指令更改 ng-select 的项目?

How can I change ng-select's items with directive?

我想我遗漏了一些非常基本的东西,请原谅我,但我真的找不到问题所在。

我只想用指令设置 ng-select 的参数(包括项目)。它正在处理一些静态属性,如 clearAllText,但我无法使用我的指令更改项目。

示例如下:https://stackblitz.com/edit/ng-select-tests-share

我可能是错的,但我认为你想要的是不可能的。

ng-select 使用 OnPush 变化检测策略。因此,当您在 ng-select 组件中设置 [items]="currenciesData" 时,更改项目的唯一方法是当 currenciesData 引用更改时。在您的指令中,您试图更改 items 的引用,这对 currenciesData.

没有影响

由于 currenciesDatang-select 的外部变量,您似乎无法在 ng-select 中的指令中修改它。

我向伟大的开发者朋友寻求帮助,这是解决方案

hostSelectComponent.ngOnChanges({
  items: {
    previousValue: [],
    currentValue: hostSelectComponent.items,
    firstChange: false,
    isFirstChange: () => false,
  }
});

并完成应用 link: https://stackblitz.com/edit/ng-select-update-from-directive