提问人:Nikunj Chaklasiya 提问时间:10/27/2023 最后编辑:Ajay ManagaonNikunj Chaklasiya 更新时间:10/30/2023 访问量:66
NG-SELECT 已禁用,无法使用使用 angular 12 的指令
NG-SELECT disabled not working with directive using angular 12
问:
我正在尝试通过指令禁用 ng-select。任何人都可以建议我该怎么做?
这是我的代码,这里是示例。这是我尝试的。
setTimeout(() => {
const selectElement = this.elementRef.nativeElement;
if (this.elementRef.nativeElement.tagName === 'NG-SELECT') {
console.log('selectElement :', this.elementRef.nativeElement);
this.renderer.setProperty(selectElement, 'disabled', true);
this.renderer.setProperty(selectElement, ' ng-select-disabled', '');
this.renderer.addClass(selectElement, 'disabled');
const inputEle = this.elementRef.nativeElement.querySelector('input');
this.renderer.setProperty(inputEle, 'disabled', true);
}
}, 1000);
我尝试了很多方法,但我需要用指令来做到这一点,谁能知道我怎么能用指令做到这一点?
- [disabled]=“true” => 使用 ngModel
- [readonly]=“true” => 使用 formControlName
- 但不适用于指令。
谁能建议我该怎么做?
答:
0赞
JSmith
10/27/2023
#1
只需从构造函数中检索主机组件,因此在此处使用该方法NgSelectComponent
setDisabledState
import { Directive, ElementRef, Renderer2 } from '@angular/core';
import { NgSelectComponent } from '@ng-select/ng-select';
@Directive({
selector: '[appCurrencySelect]',
})
export class CurrencySelectDirective {
constructor(private elementRef: ElementRef, private el: NgSelectComponent) {
setTimeout(() => {
const selectElement = this.elementRef.nativeElement;
if (selectElement.nativeElement.tagName === 'NG-SELECT') {
this.el.setDisabledState(true);
}
}, 1000);
}
ngAfterViewInit() {}
}
评论
0赞
Nikunj Chaklasiya
10/27/2023
感谢您的回复。它适用于 angular 16,但不适用于 angular 12。在我的角度 12.我的 angular 版本:ng-select 版本是 => 。12.2.0
"@ng-select/ng-select": "^7.3.0"
评论