这个Accessor比之前checkbox的稍微复杂一点点
源码
|
- 在SelectControlValueAccessor 中注入了NgSelectOption 来处理option change的问题
@Query(NgSelectOption, {descendants: true}) query: QueryList<NgSelectOption>) { this._updateValueWhenListOfOptionsChanges(query);
这里有@Query的用法, 大意是在children里查找NgSelectOption 也就是(option)组件,因为后面 QueryList
明确了查找的类型
并且,可以递归查找,如果option 里嵌套option 也会放到query里。
在构造里调用了_updateValueWhenListOfOptionsChanges方法ObservableWrapper.subscribe(query.changes, (_) => this.writeValue(this.value));
意思是 当query.changes发生的时候, 执行 后面的writeValue方法,也就是option变化的时候 让select的值更新