#angular
#угловой
Вопрос:
Я хочу установить предварительно выбранное значение для радиовхода в зависимости от условий, но оно не работает со мной, оно не выбрано. Я использую реактивные формы.
[checked]="uploadname === item.name"
Не могли бы вы, пожалуйста, помочь:
lt;form class="p-4" [formGroup]="uploadForm" (ngSubmit)="onSubmit()"gt; lt;div *ngFor="let item of products;let x = index"gt; lt;input formControlName="productName" (change)="getProductDetails(item,item.name)" class="radio-label hidden" type="radio" id="{{'itemid' x}}" [value]="item.name" [checked]="uploadname === item.name" /gt; lt;label class="button-label" for="{{'itemid' x}}"gt; lt;img [src]="item.images[0].img" /gt; lt;pgt;{{item.name | translate}}lt;/pgt; lt;/labelgt; lt;/divgt; lt;/formgt;
А это файл .ts
export class UploadComponent implements OnInit { @Input() products; productName; product: Product; uploadname = ''; constructor( private modalService: NgbModal, private ProductsListService: ProductsListService, private router: ActivatedRoute, private route: Router ) {} ngOnInit(): void { let str = this.router.snapshot.params.product; this.uploadname = str[0].toUpperCase() str.slice(1); this.products = this.ProductsListService.productItems(); } uploadForm = new FormGroup({ productName: new FormControl('', [Validators.required]), }); onSubmit() { console.warn(this.uploadForm.value); } get uf() { return this.uploadForm.controls; console.warn(this.uploadForm.controls); } getProductDetails(item: any, name: string): void { this.product = this.ProductsListService.productDetails(name); console.warn(this.product.size); } }
Комментарии:
1. поделитесь своим кодом файла .ts
2. @RaviAshara Сообщение обновлено, извините, я забыл.
Ответ №1:
Вот как работают угловые реактивные формы, если вы хотите установить предустановленные значения для своей формы, вам на самом деле нужно установить значение formControl
вместо. checked
в шаблоне будет переопределено значение элемента управления формой, которое в вашем случае является пустой строкой ''
. Таким образом, когда вы получите значение для this.uploadName
, вы можете использовать setValue
его для установки значения для элемента управления формой:
this.uploadForm.get('productName').setValue(this.uploadname);
Комментарии:
1. Большое вам спасибо за объяснение!
2. нп, рад, что смог помочь 🙂