Я выяснил с помощью других ответов:
Мне в основном пришлось установить значение в ngModel (newLocation) для переменной, которая содержала начальное значение до мутации), а не для установки нового значение для «newLocation». Таким образом, будет отображаться начальное значение / значение по умолчанию. Затем я передал эту переменную в качестве параметра моей мутации.
Вот фрагмент обновленного кода:
<mat-list-item>
<mat-form-field>
<mat-label>Location</mat-label>
<mat-select [value]="user.position" matNativeControl required [(ngModel)]="user.userPosition">
<mat-option value="Top">Top</mat-option>
<mat-option value="Front">Front</mat-option>
<mat-option value="Middle">Middle</mat-option>
<mat-option value="Back">Back</mat-option>
<mat-option value="Right">Right</mat-option>
<mat-option value="Left">Left</mat-option>
</mat-select>
</mat-form-field>
</mat-list-item>
Затем я назвал свою функцию так:
updateUser(user.id, user.userPosition)
И TS:
updateUser(userId, position) {
this.apollo
.mutate({
mutation: EDIT_USER,
variables: {
input: {
userPosition: position,
}
}
})
.subscribe(
({ data }) => {
if (data['editUser'].complete) {
this.getAssets();
const user = this.assetDetails.users.find((s) => s.id === userId);
user.userPosition = position;
}
},
(error) => {}
);
}
Действительно простое исправление. ngModel и значение нельзя использовать одновременно, так как ngModel имеет приоритет.