按钮@Directive通过Angular中的@Input绑定禁用属性

Gen*_*nís 3 directive angular

我正在尝试创建一个按钮指令,该指令可以接收布尔值@Input并且绑定到元素的disable属性<button>

到目前为止,这是我得到的:

loading-button.directive.ts

@Directive({ selector: '[appLoadingButton]' })
export class LoadingButtonDirective implements OnInit {
  @Input() loaderState: boolean;

  constructor(private renderer: Renderer2, private el: ElementRef) { }

  ngOnInit() {
    this.renderer.setAttribute(this.el.nativeElement, 'disabled', this.loaderState ? 'disabled' : '');
  }
}
Run Code Online (Sandbox Code Playgroud)

模板

<button appLoadingButton [loaderState]="submitting"></button>
Run Code Online (Sandbox Code Playgroud)

在该模板的组件中,submitting属性设置为truefalse方便时使用。

我的问题是,这种方式总是被禁用,并且我期望disable属性随指令动态变化。

任何帮助将不胜感激。

Pie*_*Duc 8

有多种选择。一种是使用@HostBinding,这就是您所需要的:

@Directive({ selector: '[appLoadingButton]' })
export class LoadingButtonDirective {
  @Input() 
  @HostBinding('disabled')
  loaderState: boolean;
}
Run Code Online (Sandbox Code Playgroud)