如何使用指令更改 ng-select 的项目?
How can I change ng-select's items with directive?
我想我遗漏了一些非常基本的东西,请原谅我,但我真的找不到问题所在。
我只想用指令设置 ng-select 的参数(包括项目)。它正在处理一些静态属性,如 clearAllText,但我无法使用我的指令更改项目。
我可能是错的,但我认为你想要的是不可能的。
ng-select 使用 OnPush 变化检测策略。因此,当您在 ng-select 组件中设置 [items]="currenciesData"
时,更改项目的唯一方法是当 currenciesData 引用更改时。在您的指令中,您试图更改 items
的引用,这对 currenciesData
.
没有影响
由于 currenciesData
是 ng-select
的外部变量,您似乎无法在 ng-select
中的指令中修改它。
我向伟大的开发者朋友寻求帮助,这是解决方案
hostSelectComponent.ngOnChanges({
items: {
previousValue: [],
currentValue: hostSelectComponent.items,
firstChange: false,
isFirstChange: () => false,
}
});
并完成应用 link:
https://stackblitz.com/edit/ng-select-update-from-directive
我想我遗漏了一些非常基本的东西,请原谅我,但我真的找不到问题所在。
我只想用指令设置 ng-select 的参数(包括项目)。它正在处理一些静态属性,如 clearAllText,但我无法使用我的指令更改项目。
我可能是错的,但我认为你想要的是不可能的。
ng-select 使用 OnPush 变化检测策略。因此,当您在 ng-select 组件中设置 [items]="currenciesData"
时,更改项目的唯一方法是当 currenciesData 引用更改时。在您的指令中,您试图更改 items
的引用,这对 currenciesData
.
由于 currenciesData
是 ng-select
的外部变量,您似乎无法在 ng-select
中的指令中修改它。
我向伟大的开发者朋友寻求帮助,这是解决方案
hostSelectComponent.ngOnChanges({
items: {
previousValue: [],
currentValue: hostSelectComponent.items,
firstChange: false,
isFirstChange: () => false,
}
});
并完成应用 link: https://stackblitz.com/edit/ng-select-update-from-directive