Javascript Mats基于单选按钮选择默认值

Javascript Mats基于单选按钮选择默认值,javascript,angular,typescript,angular5,angular-forms,Javascript,Angular,Typescript,Angular5,Angular Forms,我有三个MATFORM字段,分别命名为表格A、表格B、表格C,以及三个mat单选按钮,分别命名为A、B、C 我想要的是,当启用或选中radiobuttonA时,表单A的默认值应该是A,而在其他两个表单字段中,默认情况下应该没有值。当启用或选中radiobutton B时,表单B的默认值应为B,在其他两个表单字段中,默认情况下不应有任何值。我希望radiobutton C也有相同的值。我正在从服务获取下拉数据 样本数据: listes: any[] = [ { id: 1, name: "

我有三个MATFORM字段,分别命名为表格A表格B表格C,以及三个mat单选按钮,分别命名为A、B、C

我想要的是,当启用或选中radiobuttonA时,表单A的默认值应该是A,而在其他两个表单字段中,默认情况下应该没有值。当启用或选中radiobutton B时,表单B的默认值应为B,在其他两个表单字段中,默认情况下不应有任何值。我希望radiobutton C也有相同的值。我正在从服务获取下拉数据

样本数据:

listes: any[] = [
{ id: 1, name: "A" },
{ id: 2, name: "B"  },
{ id: 3, name: "C" },];
我尝试过的: 我试图获取id 1,它的值为A,并使用setvalue将其修补为形式A,但它不是虫子

 const toSelect = this.listes.find(c => c.id == 1);
  this.patientCategory.get('patientCategory').setValue(toSelect);

STACKBLITZ:

我已经按照您描述的场景更正了您的代码。虽然我的临时代码有点长,但它应用了您描述的逻辑。但我希望你能进一步简化

修正:

  • mat选项的[value]属性不应设置为category本身,因为category是一个对象。[value]需要一个唯一标识的单数值。因此,您应该将其设置为[value]=“category.name”。理想情况下,我们将值设置为唯一标识符,如[value]=“category.id”或[value]=“category.key”等
  • 三个mat选项应在scneario中独立运行。因此,不应将它们分配给同一个formControl。相反,请指定单个formControls以完全控制它们
  • 最后,您可以使用分配给单选按钮的函数valueChange,根据您的场景有条件地应用FormA、FormB和FormC中的值
  • 
    {{category.name}
    {{category.name}
    {{category.name}
    A.
    B
    C