2017-11-09 22 views
0
<ng-container *ngFor="let item of items"> 
    >>>>>>>>LINE 2>>>>>>>>>> {{item.checkedOrUnchecked}} 
    <mat-checkbox [checked]="item.checkedOrUnchecked"></mat-checkbox> 

上記のコードのLINE 2は、変更されたelse-whereと常に同期しています。なぜmat-checkboxが* ngForの最新の[checked]値をモデルから取得しないのですか?

ただし、mat-checkboxはtrue/falseで更新されません。その文脈はここで失われる。 * ngForがすべての反復に対して子コンテキストを作成していても、LINE 2が最新の更新を選択できるときに、なぜmat-checkboxが同期できないのでしょうか。

私が気付いた点は、item.checkedOrUncheckedの初期値がfalseでtrueに変更されている場合、mat-checkboxがチェックされていることです。しかし、item.checkedOrUncheckedをtrueからfalseまたはfalseからtrueにトグルすることは何の影響もありません。

問題はここにhttps://stackblitz.com/edit/angular-material2-checkbox-issue-zyjhd3

Plzを複製することができる誰かが助言することができます。

答えて

1

変更この:

https://stackblitz.com/edit/angular-material2-checkbox-issue


[checked]="item.checkedOrUnchecked" 

ここ

[(ngModel)]="item.checkedOrUnchecked" 

それの実施例があるに、是非ご覧下さい問題と

あなたのデモ:https://stackblitz.com/edit/angular-material2-checkbox-issue-zyjhd3

問題:*ngFor="let property of properties;let i =index;"

2)からlet i =index;の欠落

1)だからここsaveProperty($event, i)

3)this.properties[index][key] = property[key]から正しい値を渡していませんでしたが、property[key]ですstringbooleanではないため、ブール値に変換する必要があります

解決:https://stackblitz.com/edit/angular-material2-checkbox-issue-tbutvp

+0

私は試しましたが、うまくいきませんでした。 – nsk

+0

@nsk、私もデモを作成しました、更新された答えを確認してください。 –

+0

EventEmittersなどの実際の問題に直面しているデモで質問を更新しました。 – nsk

関連する問題