我有一个ngIf使用select中的值来显示或不是另一个选择,但是当我改变第一个select中的值时,ngIf仍然使用旧的价值。我使用的代码:**解决** - 角4选择不更新ngIf值
<div class="form-group" >
\t <label>First select</label>
\t <select name="status" class="form-control"[(ngModel)]="status.status">
\t \t <option *ngFor="let s of listStatus" [selected]="s.id === status.status" [value]="s.id">{{s.text}}</option>
\t </select>
</div>
<div class="form-group" *ngIf="status.status === 1">
\t <label>Second select</label>
\t <select name="blockLevel" class="form-control" [(ngModel)]="status.blockLevel">
\t \t <option *ngFor="let s of listBlockedLevel" [selected]="s.id === status.blockLevel" [value]="s.id">{{s.text}}</option>
\t </select>
</div>
在component.ts值正确更新。我试图使用{{status.status}}显示值,并且该值不会更改。
任何人都可以帮助我吗?
解决方案
我使用ChangeDetectorRef解决我的问题。在第一种选择我使用的方法来更新值
<select name="status" class="form-control" [ngModel]="status.status" (ngModelChange)="setStatus($event)">
和在TS组分i在部件的构造我用使用此
public setStatus(event: any) {
this.status.status = event;
this.ref.detectChanges();
}
这要导入ChangeDetectorRef
private ref: ChangeDetectorRef
仍然没有工作,我尝试使用显示该值这个'{{status.status}}'但价值并没有改变,它仍然初值 –
我已经更新了我的答案与两个工作的猛虎。在这两种情况下,我都将更新后的值记录到控制台。它似乎工作正常。试着比较一下你的代码,看看你是否错过了任何东西。 – CodeWarrior
第一plunker是只用''===改为''==我 – CodeWarrior