генератор угловых 6 динамических форм с дизайном материала - PullRequest
0 голосов
/ 10 сентября 2018

Может ли кто-нибудь помочь мне создать эту динамическую форму с данными, загруженными из http-вызова (по запросу)? рабочий пример кода без данных по требованию находится здесь https://stackblitz.com/edit/github-gaztsv

и я попытался загрузить данные нажатием одной кнопки, но это не работает, пожалуйста, найдите их ниже https://stackblitz.com/edit/github-gaztsv-1azc56?file=src%2Fapp%2Fcomponents%2Fdynamic-form%2Fdynamic-form.component.ts

и документ, на который я ссылался, это https://medium.com/@mail.bahurudeen/create-a-dynamic-form-with-configurable-fields-and-validations-using-angular-6-994db56834da

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Это старый пост, но он может помочь кому-то, кто борется с динамическими формами, используя json Это может помочь кому-то https://github.com/saqibumar/angular-6-dynamic-form-using-material/!

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

Ваша проблема в том, что вы создали метод для загрузки полей, но вы не вызываете его, поэтому форма не загружается. Для этого вам нужно сделать это: На вашем app.component.ts вам нужно

implements OnInit

и вам нужно загрузить свой метод на

ngOnInit(){
   this.loadvalues()
}

Так, когда компонент загружен под углом, ваша форма будет заполнена! Если вы хотите это с помощью кнопки, сделайте так: получить логическую переменную, например, на вашем app.component.ts, вы можете сделать это: visible: boolean = false; а затем loadvalues(){ this.visible = true; } и в таком виде: <dynamic-form [fields]="regConfig" (submit)="submit($event)" *ngIf="visible"> </dynamic-form>

Если вы хотите показать и спрятаться в одной кнопке, сделайте так:

loadvalues(){
    if(this.visible)
    {
      this.visible = false;
    }else{
     this.visible = true;

    }
}

Также вам нужно загрузить поля сверху.

 regConfig: FieldConfig[] = [
   {
      type: "input",
      label: "Username",
      inputType: "text",
      name: "name",
      validations: [
        {
          name: "required",
          validator: Validators.required,
          message: "Name Required"
        },
        {
          name: "pattern",
          validator: Validators.pattern("^[a-zA-Z]+$"),
          message: "Accept only text"
        }
      ]
    },
    {
      type: "input",
      label: "Email Address",
      inputType: "email",
      name: "email",
      validations: [
        {
          name: "required",
          validator: Validators.required,
          message: "Email Required"
        },
        {
          name: "pattern",
          validator: Validators.pattern(
            "^[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$"
          ),
          message: "Invalid email"
        }
      ]
    },
    {
      type: "input",
      label: "Password",
      inputType: "password",
      name: "password",
      validations: [
        {
          name: "required",
          validator: Validators.required,
          message: "Password Required"
        }
      ]
    },
    {
      type: "radiobutton",
      label: "Gender",
      name: "gender",
      options: ["Male", "Female"],
      value: "Male"
    },
    {
      type: "date",
      label: "DOB",
      name: "dob",
      validations: [
        {
          name: "required",
          validator: Validators.required,
          message: "Date of Birth Required"
        }
      ]
    },
    {
      type: "select",
      label: "Country",
      name: "country",
      value: "UK",
      options: ["India", "UAE", "UK", "US"]
    },
    {
      type: "checkbox",
      label: "Accept Terms",
      name: "term",
      value: true
    },
    {
      type: "button",
      label: "Save"
    }
  ];

Надеюсь, это поможет!

...