DiPix, проблема в том, что Angular добавляет классы статуса управления CSS к вашему пользовательскому элементу управления, а НЕ к ng-select, принадлежащему вашему внутреннему элементу управления
Вы можете ввести ngControl и проверить о control.control.invalid и control.control.touched
constructor(private injector:Injector){}
ngOnInit()
{
this.control = this.injector.get(NgControl);
}
, тогда вы можете использовать что-то вроде
<ng-select #mySelect [ngClass]="{'ng-invalid':control?.control.invalid,
'ng-touched':control?.control.touched}"
....>
Еще один подход - спросить о классе родителя. Так что если вы определили геттер как
get parentClass()
{
const match = /class=\"(.*?)\">/.exec(this.element.nativeElement.parentElement.innerHTML);
return match[0].split('"')[1]
}
constructor(private element:ElementRef){}
Вы можете использовать
<ng-select #mySelect [ngClass]="parentClass"
...>
Вы можете увидеть в свой разветвленный стек
ПРИМЕЧАНИЕ: В любом случае Чтобы обернуть ng-select, не нужно создавать пользовательский элемент управления формы, просто простой компонент с @ Input
@Input()control:any
И вы используете
<mycontrol [control]="someForm.get('someControl')"></mycontrol>
Вы можете видеть, как просто становится в этот еще один стек