Мы ценим помощь и заранее благодарим за все решения. Я создал FormGroup и хочу с помощью цикла добавить FormControls в FormGroup. Это руководство от Мэтта Торнтона, создающего настоящий сайт с помощью Angular. Как это делается в Angular 17 с динамически создаваемыми элементами управления FormControl?
Я оставил сообщение об ошибке ниже.
Overload 1 of 2, '(this: FormGroup, name: string, control: AbstractControl, options?: { emitEvent?: boolean | undefined; } | undefined): void', gave the following error.
The 'this' context of type 'FormGroup' is not assignable to method's 'this' of type 'FormGroup'.
Type '{ [key: string]: AbstractControl; }' is missing the following properties from type '{ roomName: FormControl; location: FormControl; }': roomName, location
Overload 2 of 2, '(name: "roomName" | "location", control: FormControl, options?: { emitEvent?: boolean | undefined; } | undefined): void', gave the following error.
Argument of type '`layout${string}`' is not assignable to parameter of type '"roomName" | "location"'. [plugin angular-compiler]
src/app/admin/rooms/room-edit/room-edit.component.ts:37:20:
37 │ this.roomForm.addControl(`layout${layout}`, new FormControl(
room.ts:
export enum Layout {
THEATER = 'Theater',
USHAPE = 'U-Shape',
BOARD = 'Board Meeting'
}
room-edit.comComponent.ts:
import { Component, Input, OnInit } from '@angular/core';
import { Layout, LayoutCapacity, Room } from '../../../model/room';
import { FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-room-edit',
templateUrl: './room-edit.component.html',
styleUrl: './room-edit.component.css'
})
export class RoomEditComponent implements OnInit{
@Input()
room: Room;
layouts = Object.keys(Layout);
layoutEnum = Layout;
layoutTypes: Array = Object.keys(Layout).filter(key => isNaN(+key));
roomForm = new FormGroup(
{
roomName : new FormControl('roomName'),
location: new FormControl('location'),
}
);
constructor() {
this.room = new Room();
}
ngOnInit(): void {
this.roomForm.patchValue({
roomName: this.room.name,
location: this.room.location
});
for (const layout of this.layouts) {
this.roomForm.addControl(`layout${layout}`, new FormControl(`layout${layout}`));
}
}
onSubmit() {
this.room.name = this.roomForm.controls['roomName'].value ?? '';
this.room.location = this.roomForm.value['location'] ?? '';
this.room.capacities = new Array();
console.log(this.room);
}
getLayoutByKey(layoutKey: string): Layout {
return this.layoutEnum[layoutKey as keyof typeof Layout];
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ormcontrol
Angular, как добавить Enum в FormGroup в качестве FormControl? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1730243250
Anonymous
Мы ценим помощь и заранее благодарим за все решения. Я создал FormGroup и хочу с помощью цикла добавить FormControls в FormGroup. Это руководство от Мэтта Торнтона, создающего настоящий сайт с помощью Angular. Как это делается в Angular 17 с динамически создаваемыми элементами управления FormControl?
Я оставил сообщение об ошибке ниже.
Overload 1 of 2, '(this: FormGroup, name: string, control: AbstractControl, options?: { emitEvent?: boolean | undefined; } | undefined): void', gave the following error.
The 'this' context of type 'FormGroup' is not assignable to method's 'this' of type 'FormGroup'.
Type '{ [key: string]: AbstractControl; }' is missing the following properties from type '{ roomName: FormControl; location: FormControl; }': roomName, location
Overload 2 of 2, '(name: "roomName" | "location", control: FormControl, options?: { emitEvent?: boolean | undefined; } | undefined): void', gave the following error.
Argument of type '`layout${string}`' is not assignable to parameter of type '"roomName" | "location"'. [plugin angular-compiler]
src/app/admin/rooms/room-edit/room-edit.component.ts:37:20:
37 │ this.roomForm.addControl(`layout${layout}`, new FormControl(
room.ts:
export enum Layout {
THEATER = 'Theater',
USHAPE = 'U-Shape',
BOARD = 'Board Meeting'
}
room-edit.comComponent.ts:
import { Component, Input, OnInit } from '@angular/core';
import { Layout, LayoutCapacity, Room } from '../../../model/room';
import { FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-room-edit',
templateUrl: './room-edit.component.html',
styleUrl: './room-edit.component.css'
})
export class RoomEditComponent implements OnInit{
@Input()
room: Room;
layouts = Object.keys(Layout);
layoutEnum = Layout;
layoutTypes: Array = Object.keys(Layout).filter(key => isNaN(+key));
roomForm = new FormGroup(
{
roomName : new FormControl('roomName'),
location: new FormControl('location'),
}
);
constructor() {
this.room = new Room();
}
ngOnInit(): void {
this.roomForm.patchValue({
roomName: this.room.name,
location: this.room.location
});
for (const layout of this.layouts) {
this.roomForm.addControl(`layout${layout}`, new FormControl(`layout${layout}`));
}
}
onSubmit() {
this.room.name = this.roomForm.controls['roomName'].value ?? '';
this.room.location = this.roomForm.value['location'] ?? '';
this.room.capacities = new Array();
console.log(this.room);
}
getLayoutByKey(layoutKey: string): Layout {
return this.layoutEnum[layoutKey as keyof typeof Layout];
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79139028/angular-how-to-add-enum-to-a-formgroup-as-formcontrol[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия