我有一個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