Отключить кнопку после нажатия в Angular2

у меня глупая проблема, но я не знал, как ее преодолеть, так как я использую Angular2 (Typescript) питания не JavaScript's инструменты. У меня есть этот HTML-код

<div  class=" uk-align-center" >
 <a class="md-btn md-btn-success" >Start</a>
<!--<a class="md-btn disabled" *ngIf="">Start</a>-->
</div>

просто, я хочу изменить статус кнопки на disabled после нажатия я нашел способы Javascript, но ни один из них не работал для меня, любая помощь, пожалуйста ?

4 ответов


вы можете использовать следующий подход, не касаясь вашего компонента,

<a class="md-btn md-btn-success"
   [class.disabled]="isClickedOnce"
   (click)="isClickedOnce = true">Start</a>

другое решение со стороной кода:

<button name="submitButton" #submitButton type="submit" class="btn btn-primary" (click)="onButtonClick()">Submit</button>

import { ViewChild, ElementRef } from '@angular/core';

@ViewChild('submitButton') submitButton:ElementRef;

onButtonClick()
{
    this.submitButton.nativeElement.disabled = true;
    //Do some other stuff, maybe call a service etc...
    this.submitButton.nativeElement.disabled = false;
}

вы можете использовать директиву ngClass для работы с классами:

import {Component} from '@angular/core';

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <div class=" uk-align-center" >
       <a [ngClass]="{'md-btn md-btn-success': !isButtonDisabled,
                      'md-btn disabled': isButtonDisabled }" 
          (click)="isButtonDisabled = !isButtonDisabled;">Start</a>
      </div>
    </div>
  `,
  styles: [
  `
  .md-btn md-btn-success {
    ...
  }
  .md-btn disabled {
    ...
  }
  `
 ]
})
export class App {
  isButtonDisabled: false;

  constructor() {
  }

}

Я использую Angular2-RC2. Вот как я использую * ngIf, возможно, это помогает. Примечание: в этом примере, как только кнопка нажата, она будет отключена, поэтому вы не можете нажать ее, чтобы вызвать функцию unpushMe() больше.

текст-зона.деталь.ТС

    import {Component} from '@angular/core';

    @Component({
    selector: 'textarea-comp',
    template: `
        <div>
          <div *ngIf="!isPushed" >
                <p><button (click)="pushMe()">push2disable</button></p>
        </div>
        <div *ngIf="isPushed" >
                <p><button (click)="unPushMe()" disabled >disabled</button></p>
        </div>
    `
    })

    export class TextAreaComponent {
            isPushed: boolean = false;


    pushMe() {
            this.isPushed = true;
      }
        unPushMe() {
            this.isPushed = false;
      }
    }