用* ng进行Mat-select会导致ExpressionChangedAfterItHaHasBeenCheckedError

时间:2019-08-13 10:39:50

标签: angular angular-material2

我有一个mat-form-field,我想包含输入或选择。

当我使用<输入>时,* ngIf可以正常工作。但是,当我使用如下所示的时,它会抛出“ ExpressionChangedAfterItHaHasBeenCheckedError”。

我认为这只是自将我的角度版本更新为:

Angular CLI:8.2.1 节点:10.16.2 角度:9.0.0-next.1

为什么要使用输入而不是选择?

这是html:

<mat-form-field>
  <input *ngIf="input.name!=='Bid'" matInput [(ngModel)]="input.value">
  <mat-select *ngIf="input.name==='Bid'" [(value)]="input.value">
    <mat-option *ngFor="let s of statuses" name="status" [value]="s">{{s}}</mat-option>
  </mat-select>
  <mat-placeholder class="placeholder">{{input.name}}</mat-placeholder>
</mat-form-field>

input.name属性是在ngOnInit()中调用的方法中设置的,如下所示:

ngOnInit() {
  this.prepareInputs();
}

1 个答案:

答案 0 :(得分:0)

这是由dir/s行引起的,该行未应用<mat-placeholder>,因此,当未选择输入时,*ngIf会引起阻塞!当我将<mat-placeholder>放在*ngIf上时,问题消失了。

<mat-placeholder>