Читая этот блог , я натолкнулся на следующую цитату:
Обычно это класс компонента или директивы, который регистрирует провайдера
Это означает, что он указан как NG_VALUE_ACCESSOR
поставщик в @Component
декораторе.Мне любопытно о любых необычных способах.Я видел примеры, в которых он прямо указывался на NgControl
через:
constructor(@Self() @Optional() private ngControl: NgControl) {
if (this.ngControl) {
this.ngControl.valueAccessor = this;
}
}
Однако мне интересно, есть ли еще одна альтернатива, которая подойдет для моего варианта использования ...
Я «расширяю» MatSelect
с добавлением механизма фильтрации путем создания нового компонента, который использует MatSelect
в его реализации / шаблоне.В настоящее время мой компонент должен служить ControlValueAccessor
.Значит ли это, что я могу предоставить базовый MatSelect
вместо этого?Я могу получить к нему доступ через @ViewChild
, однако требование доступа выполняется в ngOnChanges()
, то есть до того, как выбор становится доступным в ngAfterViewInit()
.