添加占位符以在angular2中选择标记

Egg*_*ggy 24 angular

我有一个只包含表单的简单组件:

import {Component, FORM_DIRECTIVES, NgFor} from 'angular2/angular2';


@Component({
  selector: 'test-component',
  directives: [FORM_DIRECTIVES, NgFor],
  template: `
    <form class="form-inline" (ng-submit)="onSubmit()" #form="form">
      <div class="form-group">
        <select class="form-control" 
          [(ng-model)]="model.server" 
          ng-control="server" 
          #server="form" 
          required>
          <option selected hidden>placeholder</option>
          <option *ng-for="#server of servers" 
            [value]="server">{{ server | uppercase }}
          </option>
        </select>
      </div>
      <div class="form-group">
        <input class="btn btn-primary" type="submit" value="Load"
          [disabled]="!form.form.valid">
      </div>
    </form>
  `
})
export class TestComponent {
  public model: Model = new Model();
  public servers: string[] = ['a', 'b', 'c'];

  onSubmit(): void {
    // Complicated logic.

    // Reset form.
    this.model.reset();
  }
}

class Model {
  constructor(
    public server: string = ''
  ) { }

  reset(): void {
    this.server = '';
  }
}
Run Code Online (Sandbox Code Playgroud)

我想为我的选择创建"占位符",但是ng-model会覆盖所选属性,导致根本没有选择选项.任何sugestions?我正在使用角度2.0.0-alpha.48.

Tho*_*son 22

我通过执行以下操作来实现此目的:

enter code here

<div class="form-group">
  <label for="metricsType">metrics type</label>
  <select id="metricsType" class="form-control" required [(ngModel)] ="model.metrics.type">
     <option value="" disabled="true" [selected]="!model.metrics.type">--please select--</option>
     <option *ngFor="let item of metricTypes" [value]="item.value">{{item.label}}</option>
  </select>
 </div>
Run Code Online (Sandbox Code Playgroud)

然后使用css ng-pristine进行样式设计

select {
 border: 1px solid transparent;
  &.ng-pristine{
    font-style: italic;
    color: darken($white, 50%);
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个键是```[selected] ="!model.metrics.type"``` (3认同)

ism*_*tro 16

Angular 5解决方案和反应形式!

<option value="null" disabled="true" [selected]="true">Placeholder text..</option>
Run Code Online (Sandbox Code Playgroud)

:)


Bac*_*tnz 14

<select class="form-control" [(ngModel)]="mySelect">
<option value="-1">Placeholder text..</option>
<!-- forloop of options heres -->
</select>
Run Code Online (Sandbox Code Playgroud)

然后在你的组件中. this.mySelect = -1;


izi*_*k f 8

这项工作对我来说

<option [ngValue]="undefined" hidden selected> please select </option>
Run Code Online (Sandbox Code Playgroud)


我的答案是基于这个答案答案