Angular 5 + Material Design: <mat-select>如何设置默认值?

4
 <mat-form-field>
      <mat-select [formControl]="form.controls['defaultCategory']" [(ngModel)]="resource.categoryName" >
        <mat-option *ngFor="let category of categories | async" [value]="category._id" >
          {{ category.name }}
        </mat-option>
      </mat-select>
 </mat-form-field>

我尝试了很多方法,包括查阅文档、在GitHub上搜索问题报告,但仍然无法解决我的问题。

我只想设置默认值...

默认值存储在一个名为resource.categoryName的变量中。选项来自mongodb中的一个集合,这些选项存储在categories[]中。

这张图片展示了关闭的mat-select(没有显示默认值,但它应该有...)

打开的mat-select

这是我的.ts文件。重要的一行是 "this.resource.categoryName = this.subdoc['name'];"。这里我设置了"resource.categoryName。如果我尝试console.log(this.resource.categoryName), 我会得到类别的名称...

在.ts文件中创建一个变量,并确保它是一个字符串。之后,使用默认类别的ID声明该变量。(在我的情况下,只能使用ID,而不能使用简单名称) - 感谢Simeon、Hamid和其他关于此问题的讨论。

1个回答

1
我看不到你的组件文件,但问题可能是在组件初始化时resource.categoryName没有设置值。尝试在*.component.ts文件中手动设置它。

我添加了一个我的.ts文件的图片,其中我设置了值。(如果您需要更多信息,请告诉我) - Christopher Schönfeldt
1
我同意Simeon的观点。如果resource.categoryName有一个值,或者你在你的component.ts中初始化了一个值到resource.categoryName,它会神奇地工作。 - Hamid Hoseini
是的,我的问题是我声明了类别的名称。我必须将ID声明为“defaultSelectedVariable”。 - Christopher Schönfeldt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接