Радиокнопка Angular 6 не обновляет ngModel - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть радиогруппа:

<div class="btn-group">
  <div class="btn btn-outline-secondary"
  *ngFor="let category of categories">
    <input
    type="radio"
    [value]="category.id"
    [(ngModel)]="categoryModel.name">
     {{category.name}}
  </div>
</div>

ц

import { Component, ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss'],

})

export class Test {

  categories: {};
  categoryModel = {name: ''};

  constructor(private modalService: NgbModal) {
    this.categories = [{
      id: 1, name: 'test1',
    },
    {
      id: 2, name:  'test2'
    },
    {
      id: 3, name:  'test3',
    },
  ]
}

Когда я нажимаю на радио, моя модель не обновляется, {{}} CategoryModel.name все еще пусто, что с ним не так, как я могу это изменить?

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Вместо привязки categoryModel.name, вы можете связать categoryModel. Чтобы это работало, установите значения параметров на category и убедитесь, что переключатели имеют одинаковые name.

<div class="btn-group">
  <div *ngFor="let category of categories" class="btn btn-outline-secondary">
    <input
      type="radio"
      name="category"
      [value]="category"
      [(ngModel)]="categoryModel">
      {{category.name}}
  </div>
</div>

См. этот стек для демонстрации.

0 голосов
/ 17 июля 2019

// Рабочий код вы можете напрямую скопировать и вставить код и настроить согласно вашему требованию

import { Component } from '@angular/core';
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  categoryList: {};
  selectedCategory = { name: "" };

  constructor() {
    this.categoryList = [
      { id: 1, name: 'Option1' },
      { id: 2, name: 'Option2' },
      { id: 3, name: 'Option3' },
      { id: 4, name: 'Option4' },
      { id: 5, name: 'Option5' },
    ]
  }
}
<div>
<h1>  Seleted Option:  {{selectedCategory.id}}- 
  {{selectedCategory.name }}</h1>
  <div class="btn btn-outline-secondary"
  *ngFor="let cat of categoryList">
    <input
    type="radio"
    [value]="cat"
    [(ngModel)]="selectedCategory">
     {{cat.name}}
  </div>
</div>
0 голосов
/ 10 сентября 2018

Вы привязываетесь к значению радиокнопки, равному идентификатору категории.

Вы можете использовать событие изменения, чтобы получить имя выбранной в данный момент категории, например:

change(category_id){
 this.categoryModel.name = this.categories.find(c => c.id == category_id).name
}

Пример здесь: https://stackblitz.com/edit/angular-qeejnn?file=src%2Fapp%2Fapp.component.ts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...