gpt4 book ai didi

html - Angular:如何在 mat-dialog 的 mat-select 中返回所选项目的所有数据,同时保留所选默认值的代码

转载 作者:行者123 更新时间:2023-12-04 15:20:17 25 4
gpt4 key购买 nike

我有一个填充垫选择的模态垫对话框。下拉列表中填充了语言。我将 (value) 绑定(bind)到语言的 ID,以便在将数据传递到对话框时可以使用默认值预先选择它。但是,我想带回下拉列表中看到的“ID”和“语言描述”。在 mat-dialog-close 上返回 mat-select 的数据时,有没有办法填充两个数据字段?我明白为什么我会得到“data.ID”和“data.translation”,但我怎样才能让选择的“data.language”被填充?重要提示:当先前选择了一种语言时,下拉菜单是使用 data.id 预先选择的,因此除非有其他方法,否则不想失去默认值功能。

提前谢谢你。

.html


<div mat-dialog-content class="fullwidth">
<p>Select language to translate</p>
<mat-form-field class="fullwidth">
<mat-label>Language</mat-label>
<mat-select [(value)]="data.id">
<mat-option *ngFor="let langItem of languageList$;" [value]="langItem.value">
{{langItem.description}}
</mat-option>
</mat-select>
</mat-form-field>

<mat-form-field class="fullwidth">
<mat-label>Enter translation here</mat-label>
<textarea class="textarea" matInput placeholder="Ex. Translation here..." [(ngModel)]="data.translation"></textarea>
</mat-form-field>

</div> <div mat-dialog-actions> <button mat-stroked-button class="right" [mat-dialog-close]="data" cdkFocusInitial>Save</button> </div>

.ts

    openTranslationDialog(event, elem): void {
const dialogRef = this.translateDialog.open(TranslationModalComponent, {

data: {id: String(this._transData?.id), language: this._transData?.language, translation: this._transData?.translation}
});

dialogRef.afterClosed().subscribe(result => {
console.log("Language Description: " + result.description);
console.log("Language ID: " + result.id); //only get ID back

});
}

json

{code: "1033", description: "Afrikaans", value: "100000001"}
{code: "1033", description: "Damara", value: "100000002"}
{code: "1033", description: "English", value: "100000000"}
{code: "1033", description: "German", value: "100000003"}
{code: "1033", description: "isiNdebele", value: "100000004"}
{code: "1033", description: "isiXhosa", value: "100000005"}
{code: "1033", description: "isiZulu", value: "100000006"}

最佳答案

它位于 [mat-dialog-close] 中,您可以在其中指明订阅时希望在“结果”中收到什么值。所以你可以在你的 TranslationModalComponent 中创建一个函数

getData() {
const language = this.languageList$.find(
x => x.value == (this.data as any).id
);
return { ...this.data, ...language };
}

并使用

<button [mat-dialog-close]="getData()" ...>Save</button>

关于html - Angular:如何在 mat-dialog 的 mat-select 中返回所选项目的所有数据,同时保留所选默认值的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63444871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com