Visão geral dos componentes de rádio Angular e grupo de rádio

    Radio Button

    O componente Ignite UI for Angular Radio Button permite que o usuário selecione uma única opção de um conjunto de opções disponíveis listadas lado a lado.

    Angular Radio & Radio Group Example

    Getting Started with Ignite UI for Angular Radio Button

    Para começar a usar o componente Ignite UI for Angular Radio Button, primeiro você precisa instalar Ignite UI for Angular. Em um aplicativo Angular existente, digite o seguinte comando:

    ng add igniteui-angular
    

    Para obter uma introdução completa ao Ignite UI for Angular, leia o tópico de introdução.

    O próximo passo é importar o IgxRadioModule no arquivo app.module.ts.

    // app.module.ts
    
    ...
    import { IgxRadioModule } from 'igniteui-angular';
    // import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxRadioModule],
        ...
    })
    export class AppModule {
        public selected: any;
    }
    

    Como alternativa, a partir da 16.0.0, você pode importar IgxRadioGroupDirective e IgxRadioComponent como dependências autônomas ou usar o token IGX_RADIO_GROUP_DIRECTIVES para importar o componente e todos os seus componentes e diretivas de suporte.

    // home.component.ts
    
    import { FormsModule } from '@angular/forms';
    import { IGX_RADIO_GROUP_DIRECTIVES } from 'igniteui-angular';
    // import { IGX_RADIO_GROUP_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
      selector: 'app-home',
      template: `
        <igx-radio-group>
          <igx-radio [(ngModel)]="selected" value="London">London</igx-radio>
          <igx-radio [(ngModel)]="selected" value="New York">New York</igx-radio>
          <igx-radio [(ngModel)]="selected" value="Tokyo">Tokyo</igx-radio>
          <igx-radio [(ngModel)]="selected" value="Sofia">Sofia</igx-radio>
        </igx-radio-group>
      `,
      styleUrls: ['home.component.scss'],
      standalone: true,
      imports: [IGX_RADIO_GROUP_DIRECTIVES, FormsModule],
      /* or imports: [IgxRadioComponent, IgxRadioGroupDirective, FormsModule] */
    })
    export class HomeComponent {
      public selected: any;
    }
    

    Agora que você importou o módulo Ignite UI for Angular Radio Button ou as diretivas, você pode começar a usar a diretiva igx-radio-group e o componente igx-radio.

    Using the Angular Radio Button

    Botões de opção podem ser exibidos usando o seguinte código dentro do modelo do componente:

    <igx-radio [(ngModel)]="selected" value="option1">Option 1</igx-radio>
    <igx-radio [(ngModel)]="selected" value="option2">Option 2</igx-radio>
    

    Label

    A propriedade labelPosition pode ser usada para alterar a posição padrão do rótulo no componente de rádio. Os usuários podem escolher entre before e after. Se não for especificado, o rótulo será colocado após o botão de rádio.

    <igx-radio [(ngModel)]="selected" value="option1" labelPosition="before">Option 1</igx-radio>
    <igx-radio [(ngModel)]="selected" value="option2" labelPosition="before">Option 2</igx-radio>
    

    Properties

    Vamos aprimorar o exemplo anterior adicionando quatro botões de opção, cada um responsável por aplicar uma determinada cor como plano de fundo. Vamos vincular a propriedade backgroundColor de um elemento div à propriedade selectedColor do componente. Você notará que selectedColor também participa de uma relação de vinculação bidirecional por meio da diretiva NgModel, portanto, seu valor é atualizado cada vez que o usuário seleciona um botão de opção diferente (cor).

    // radiogroup.component.ts
    ...
    public colors = [{
        hex: '#f06a2f',
        name: 'Carrot'
    }, {
        hex: '#ff134a',
        name: 'Watermelon'
    }, {
        hex: '#7bc96f',
        name: 'Grass'
    },
    {
        hex: 'transparent',
        name: 'No color'
    }];
    
    public selectedColor: string = this.colors[3].hex;
    
    <!--radiogroup.component.html-->
    <igx-radio *ngFor="let color of colors" name="color" [value]="color.hex" [(ngModel)]="selectedColor">
      {{color.name}}
    </igx-radio>
    
    <div [style.background-color]="selectedColor">...</div>
    

    Preste atenção que se você não usar a diretiva NgModel em uma vinculação de dados bidirecional, você deve importar o FormsModule e adicioná-lo à lista de importações do NgModule.

    O resultado final seria algo assim:

    Estilização

    Para começar a estilizar os botões de opção, precisamos importar o arquivo index, onde todas as funções do tema e mixins de componentes estão localizados:

    @use "igniteui-angular/theming" as *;
    
    // IMPORTANT: Prior to Ignite UI for Angular version 13 use:
    // @import '~igniteui-angular/lib/core/styles/themes/index';
    

    Seguindo a abordagem mais simples, criamos um novo tema que estende o radio-theme e aceita alguns dos parâmetros do tema padrão:

    $custom-radio-theme: radio-theme(
      $disabled-color: lightgray,
      $empty-color: #345779,
      $fill-color: #2dabe8,
      $fill-color-hover: #2dabe8,
      $fill-hover-border-color: #2dabe8,
    );
    

    O último passo é passar o tema de rádio personalizado em nossa aplicação:

    @include css-vars($custom-radio-theme);
    

    Radio Group

    A diretiva Ignite UI for Angular Radio Group fornece um contêiner de agrupamento que permite melhor controle sobre os componentes de rádio filho e oferece suporte a formulários reativos e baseados em modelos.

    Demo

    Usage

    A Diretiva de Grupo de Rádio é exportada como um NgModule, portanto, tudo o que você precisa fazer em seu aplicativo é importar o IgxRadioModule no arquivo app.module.ts:

    // app.module.ts
    ...
    import { IgxRadioModule } from 'igniteui-angular';
    // import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxRadioModule],
        ...
    })
    

    Para começar, crie um igxRadioGroup e adicione vários componentes igxRadio.

    Note que, ao definir um name propriedade para o grupo de rádio é obrigatório.

    <!--radio-group.component.html-->
    <igx-radio-group name="fruitsRadioGroup">
      <igx-radio *ngFor="let fruit of fruits" value="{{fruit}}">
        {{fruit}}
      </igx-radio>
    </igx-radio-group>
    
    // radio-group.component.ts
    public fruits = ["Apple", "Mango", "Banana", "Orange"];
    

    Alignment

    Use a propriedade de entrada de alignment para alterar a orientação dos componentes igxRadio no grupo de rádio. Os usuários podem escolher entre horizontal e vertical. Por padrão, o alinhamento do grupo de rádio é horizontal.

    //sample.component.ts
    import { RadioGroupAlignment } from "igniteui-angular";
    ...
    public alignment = RadioGroupAlignment.vertical;
    ...
    
    <!-- sample.component.html -->
    <igx-radio-group [alignment]="alignment">
      <igx-radio [(ngModel)]="selected" value="London">London</igx-radio>
      <igx-radio [(ngModel)]="selected" value="New York">New York</igx-radio>
      <igx-radio [(ngModel)]="selected" value="Tokyo">Tokyo</igx-radio>
      <igx-radio [(ngModel)]="selected" value="Sofia">Sofia</igx-radio>
    </igx-radio-group>
    

    API References

    Theming Dependencies

    Additional Resources

    Nossa comunidade é ativa e sempre acolhedora para novas ideias.