Angular - 输入值和选择占位符不起作用

时间:2017-08-23 15:41:08

标签: javascript angular angular-ngmodel


我正在创建一个包含一些select和一些输入类型的表单,如下所示。

    <div id="datiRichiesta">
            <div *ngFor="let d of formDatiRichiesta" class="form-row">

              <input *ngIf="d.type=='text'"
                     type="text"
                     class="form-control"
                     placeholder="{{d.placeholder}}"
                     [(ngModel)]="model[d.name]"
                     name="{{d.name}}"
                     (focus)="$event.target.placeholder = ''"
                     (blur)="$event.target.placeholder = d.placeholder"
                     value="richiesta.prova"/>

              <select *ngIf="d.type=='select'" 
                      class="form-control" 
                      name="{{d.name}}" 
                      [(ngModel)]="model[d.name]"
                      required>
                <option selected disabled value="">{{d.placeholder}}</option>
                <option *ngFor="let b of elencoBanche" value="{{b.id}}">{{b.nome}}</option>
              </select>

            </div>
      </div>

我有两个主要问题:

  1. 我需要在输入类型上设置value,但它不起作用。我知道我应该使用像ngValue这样的东西,或者至少我在线阅读,但大多数例子都被提到angularjs,我有点困惑。如果我只是放置[ngValue]="richiesta.prova",则浏览器会抱怨Can't bind to 'ngValue' since it isn't a known property of 'input'
  2. 我需要为select显示placeholder,但它不起作用,因为第一个<option>是下拉列表中的所有其他内容。在这方面,我没有任何线索,因为它应该真的有效。
  3. 任何帮助都会受到赞赏,也许有一些解释,我觉得我错过了一些关于角度绑定的东西 感谢。

2 个答案:

答案 0 :(得分:0)

1)NgModel设置值。如果model [d.name]不为空 - 它将被设置  https://angular.io/guide/forms
2)How to show placeholder (empty option) in select control in Angular 2?
这两行是多余的:
(焦点)=&#34; $ event.target.placeholder =&#39;&#39;&#34;
#34;
(模糊)=&#34; $ event.target.placeholder = d.placeholder&#34;

答案 1 :(得分:0)

如果占位符不起作用,则仅表示您已将其分配给该输入一些值。对于您而言,我100%确保{{d.placeholder}}拥有一定的价值(可能价值等于'')。将此值分配为NULL。然后查看结果。

placeholder="{{d.placeholder}}"