Генерировать угловую форму из JSON

#angular #angular6 #angular-reactive-forms

#angular #angular6 #угловые реактивные формы

Вопрос:

Я хочу сгенерировать реактивную форму Angular 6 из JSON во время выполнения. Мне также нужны действия на уровне полей, например, если это выпадающий список, чем я могу выполнить onchange событие, и для других полей нам также нужна та же функция. Я искал в сети, но не смог найти решение.

Комментарии:

1. Что вы пробовали до сих пор? Вы смотрели на этот пример из Angular docs (он показывает в значительной степени именно то, что вы хотите)?

2. Я пробовал с ‘ medium.com/@mail.bahurudeen / … ‘ссылка .. и возможность сгенерировать форму .. но проблема в том, что я могу вызвать какое-то пользовательское событие из кнопки или любого другого поля…

3. Этот вопрос довольно краткий и пришел без объяснений после того, как были сделаны запросы на ясность. Я постараюсь пока отложить ее.

Ответ №1:

допустим, это ваши данные json,

 data= {name:'name',adress:'some data'}
 

затем вы можете сделать так

  constructor(private fb:FormBuilder){}

 ngOnInit() {samplefb=this.fb.group(userForm:this.fb.group({}));
 //after getting data i mean,service.getdata().toPromise().then(your code)

 (<FormGroup>this.samplefb.get('userForm')).addControl('name',this.fb.control(data.name));
 (<FormGroup>this.samplefb.get('userForm')).addControl('address',this.fb.control(data.address));


  }
 

надеюсь, это сработает!

Ответ №2:

Используйте ngFor и ngIf для итерации JSON и отображения правильных полей.

 <div *ngFor="let item of items">
    <div *ngIf="item.type === 'dropdown'">...</div>
    <div *ngIf="item.type === 'otherType'"> </div>
</div>
 

Для получения дополнительной информации перейдите по этим ссылкам:

NgForOf

ngIf

Комментарии:

1. Не совсем то, что он ищет, imo. Он хочет «преобразовать» данные JSON в угловую форму.

2. @Zooly: Если это так, я прошу прощения, но для меня это неясно с предоставленной информацией.

3. @Zooly: учитывая его новый комментарий, он пытается сделать именно то, что я опубликовал.