禁用在angular2

时间:2016-07-14 14:36:17

标签: drop-down-menu twitter-bootstrap-3 angular

我正在写angular2 app。 我需要所有按钮并选择禁用,然后我需要启用它们。我想通过使用我的类字段但禁用但没有运气来做到这一点。 我有这段代码:

 @Component({
  selector: 'my-app',
  template:`
    <h1>Disable Enable</h1>
    <h2> this is a disabled select </h2>
    <select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()" disabled>
      <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
    </select>
     <h2> this is a disabled button </h2>
    <button type="button" class="btn btn-default {{butDisabled}}">Disabled</button>

    <h2> Why can't I disable the select the same way? </h2>
    <select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()" class="{{butDisabled}}">
      <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
    </select>


  `,
})
export class AppComponent {
  butDisabled = "disabled";
  levelNum:number;
  levels:Array<Object> = [
      {num: 0, name: "AA"},
      {num: 1, name: "BB"}
  ];

}

我不明白为什么我不能使用{{butDisabled}}来禁用select。 我究竟做错了什么? 非常感谢

这是一个plunker

7 个答案:

答案 0 :(得分:25)

你可以像这样绑定[disabled]属性:

<button type="button" class="btn btn-default" [disabled]="butDisabled">Disabled</button>

<select type="number" [(ngModel)]="levelNum" (ngModelChange)="toNumber()" [disabled]="butDisabled">
  <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
</select>

在组件中,将变量设为布尔值:

export class AppComponent {
    butDisabled: boolean = true;
  

使用Plunker作为示例用法

答案 1 :(得分:23)

对于您的情况,使用标记[disabled]="butDisabled"就足够了,但值得注意的是此方法不适用于被动表单,您可以在其中禁用/启用控件代码:

this.form.get('myFormControlName').enable();
this.form.get('myFormControlName').disable();

答案 2 :(得分:5)

如果您想添加/删除单个课程,我建议您使用Angular2中的内置帮助程序。但是,正如已经说过的那样,禁用带有类的选择不会起作用。 Angular2还有另一个属性here的帮助器。使用属性功能,您可以为HTML执行此操作。

<select type="number" [attr.disabled]="controlEnabled"></select>

这适合你的班级

export class AppComponent {
  controlEnabled:boolean = true;
}

答案 3 :(得分:1)

当禁用某个选项时,再进行一些操作然后禁用按钮时,您需要使用disabled属性。与@rinukkusu所做的类似,我建议使用# setup rest client my $client = REST::Client->new(); # don't verify SSL certs $client->getUseragent()->ssl_opts(verify_hostname => 0); $client->getUseragent()->ssl_opts(SSL_verify_mode => SSL_VERIFY_NONE);

以下是我创建的工作Plunker

答案 4 :(得分:1)

您无法使用简单类禁用选择。 Bootstrap提供了一个提供简单设计的类,但对于大多数组件来说还不够。 与第一次选择一样,您必须通过添加简单的ng2绑定将disabled属性添加到组件中。

这是一个工作示例

https://plnkr.co/edit/z1aeTAPsGA6HLip0RCkM?p=preview

//our root app component
import {Component, Directive, Output, EventEmitter, Input, SimpleChange} from 'angular2/core'
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';

@Component({
  selector: 'my-app',
  template:`
    <h1>Disable Enable</h1>
    <select type="number" [disabled]="disabled">
      <option *ngFor="let level of levels" [ngValue]="level.num">{{level.name}}</option>
    </select>
    <button (click)='toggle()'> disable/enable </button>  


  `,
})
export class AppComponent {
  disabled = true;
  levels = [{num:1, name: 'test'}];

  toggle() {
    this.disabled = !this.disabled;

  }
}

答案 5 :(得分:0)

这对Angular 8项目有效。希望对您有所帮助。

<select [attr.disabled]="!name.valid ? 'disabled' : null" formControlName="gender">

答案 6 :(得分:0)

尽管据说使用了 [disabled],但它对我不起作用。没看懂。

但实际上 <select><option> 是 html 元素,而不是 angular 元素。要以原始方式禁用这些元素,您只需在 disabled 标记中使用 <select>

现在为了区分,您可以使用这样的 ng-container:

<ng-container *ngIf="element.isEditable === true; else notEditable"> 
    <select> 
        <option>
            ...
        </option>
    </select>
</ng-container>

<ng-template #notEditable> 
    <select disabled> 
        <option>
            ...
        </option>
    </select>
</ng-template>