首页 > 解决方案 > 动态调用管道转换时,ng-select 不更新选项

问题描述

Ng-select ( https://github.com/ng-select/ng-select ) 在动态调用管道转换时不会更新值,例如,当调用用于转换选项值的服务时。

我尝试同时使用 - ng-option 方式和 ng-template 方式。

Ng-option-search 有效,但在语言更改后值不会更新。Ng-template - 更改后更新值,但搜索不起作用。

示例: https ://stackblitz.com/edit/ng-select-angular6-b5ru39

预期的结果是选项自动更新或在调用管道转换时使用 ng-template 进行搜索可以正常工作。

标签: angularselect

解决方案


您的语言服务应该将 currentLanguage 公开为 Observable。一旦它是一个 Observable,您就可以在视图中使用异步管道订阅它。使用它,Angular 的 ChangeDetection 再次调用管道。

你甚至可以让你的管道是纯的(这是默认的),因为它会被 Angular 用新的语言代码再次调用。

我已经在你的 Stackblitz 的这个分支中为你解决了这个问题。

另外,请记住有很多好的翻译库(TransLoco、ngx-translate),但如果数据本身是从服务器动态检索的,您仍然必须使用您的解决方案。


推荐阅读