多级单选按钮

Multi level radio button

我只想为一个特定选项创建一个两级单选按钮。 在这里,我编写了一个逻辑,将在 'Spring' 选项下显示额外的两个单选按钮。但是当它被选中时,它会呈现所有选项。对齐也没有按预期发生。

HTML

<mat-radio-group class = "radio-group"[(ngModel)]="favoriteSeason">
 <mat-radio-button class="example-radio-button" *ngFor="let season of seasons" [value]="season">
    {{season}}
    <mat-radio-group class = "radio-group" *ngIf="favoriteSeason ==='Spring'">
      <mat-radio-button class="example-radio-button" *ngFor="let season of climate" [value]="season">
      {{season}}
       </mat-radio-button>
    </mat-radio-group>
  </mat-radio-button>
</mat-radio-group>

打字稿

export class RadioNgModelExample {
  favoriteSeason: string;
  seasons: string[] = ['Winter', 'Spring', 'Summer', 'Autumn'];
  climate:string[]=['rainy','hot'];
}

我想这样创作

如果条件

,您需要再添加一项签到
*ngIf="season ==='Spring' && favoriteSeason ==='Spring'"

对于图标对齐问题,请在下方添加 css

为您的单选按钮元素添加 class="custom-radio-button"

:host ::ng-deep .custom-radio-button .mat-radio-label{
  align-items: start;
}

对于下面评论中提到的选择问题,您必须使用 CSS 选择器为 mat-radio-button 自定义 css 以满足您的要求。示例代码如下:

::ng-deep.custom-radio-button.mat-accent.mat-radio-checked  >label >div > .mat-radio-outer-circle {
       border-color:blue!important; /*outer ring color change*/
  }
   ::ng-deep.custom-radio-button.mat-accent.mat-radio-checked  >label >div > .mat-radio-inner-circle {
       background-color:blue!important; /*outer ring color change*/
  }

::ng-deep.custom-radio-button.mat-accent .mat-radio-inner-circle{
   background-color:#fff!important; 
}

::ng-deep.custom-radio-button.mat-accent .mat-radio-outer-circle{
   border-color:rgba(0,0,0,.54)
}
::ng-deep.custom-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle
{
   border-color:rgba(0,0,0,.54)
}

我认为您可以通过在您的组件 css 文件中使用 CSS 来解决这个问题,方法是使用 nthchild 属性。在第 n 个 child 中,您只想在第 2 个 child 中显示此内容。