如何在NgRx商店中更改垫选模型

时间:2020-01-16 13:31:04

标签: angular-material ngrx ngrx-store

这是我的模板

<mat-select [ngModel]="selected3">
    <mat-option (onSelectionChange)="handleChange($event,srs.id)" *ngFor="let srs of schemas" [value]="srs.id">
        {{srs.name}}
    </mat-option>
</mat-select>

handleChange()中,变量selected3的状态在NgRx存储中被更新,但是在我的选择中,未在mat-select下拉列表中选择该状态。如果我删除此(onSelectionChange)事件,即不通过handleChange调度存储动作,则选项选择有效。我不知道这里出了什么问题。

2 个答案:

答案 0 :(得分:1)

<mat-select (selectionChange)="handleChange($event.value)" [ngModel]="selected3">
    <mat-option  *ngFor="let srs of schemas" [value]="srs.id">
      {{srs.name}}
    </mat-option>
 </mat-select>

(selectionChange)标记内使用<mat-select>事件,而不是(onSelectionChange);

答案 1 :(得分:0)

我通过将[[ngModel)]替换为[value]来解决了该问题,因为我们拥有mat-select的只读值,该值将在NgRx存储中进行修改。

<mat-select (selectionChange)="handleChange($event)"
                    [value]="selected3?.id">
                    <mat-option *ngFor="let srs of schemas" [value]="srs.id">
                        {{srs.name}}
                    </mat-option>
                </mat-select>

在handleChange()中,我需要的是当前选定的srs的ID,该ID由$ event.value获取