Búsqueda de sitios web

html - ¿Cómo agregar el atributo disable en un selector de componente?


Estoy tratando de desactivar el botón. Pero el botón es un componente de Angular. Y el atributo disabled de HTML5 no puede funcionar en el selector del componente.

Intenté agregarlo así pero no funciona: [attr.disabled]="isOpenModal

Código HTML del botón:

 <add-new-button [attr.disabled]="isOpenModal" 
                 (click)="openModal('new')"
                 class="nano-bc-green hover-effect">
 </add-new-button>

Botón - Componente "añadir nuevo botón"

   @Component({
    selector: 'nano-add-new-button',
    template: `
              <div class='nano-f-r nano-f'>
                    <i class='fa fa-plus'></i>
                    <span class='nano-ml-5'>
                        Add New
                    </span>
              </div>`
})
export class NanoAddNewButtonComponent {
}

Método Abrir Modal que se utiliza en el botón:

public openModal(id: string): void {
        const data = {id: id};
        this.modalModel.add(AudienceModel.ENTITY_NAME, data);
}

¿Alguna idea para la solución?

Respuesta #1

Porque tu componente add-new-button puede ser cualquier cosa, y disabled no es una propiedad que todos los elementos tengan, eso no puede funcionar. Revisa la lista de Atributos Globales.

Tienes que definir tu propia propiedad disabled:

@Input() disabled: boolean;

Y puedes vincular esto a los elementos que quieres desactivar como:

<button [disabled]="disabled">My button</button>

Puedes usarlo así después:

 <add-new-button [disabled]="isOpenModal"
             (click)="openModal('new')"
             class="nano-bc-green hover-effect">
 </add-new-button>

Respuesta #2

Simplemente pon la lógica deshabilitada en el propio método de clic:

Plantilla :

 <add-new-button (click)="onModalClick()"
                 class="nano-bc-green hover-effect">
 </add-new-button>

TypeScript :

onModalClick() {
    if (!this.isOpenModal) {
      this.openModal('new');
    }
}

Artículos relacionados