0

I am facing problem while adding input field dynamically,

when i click on plus button it calls AddItemData() but this function is not adding new input field to deck_array

Here is my code,

home.html

<form [formGroup]="myForm1">
  <ion-list no-lines class="listMargin">
    <ion-item>
      <ion-label class="labelColor" stacked>
        Ship name
      </ion-label>
      <ion-input formControlName="ship_name" type="text"></ion-input>
    </ion-item>
    <div formArrayName="deck_array" style="background-color:white">
      <ion-list *ngFor="let obj of myForm1.controls.deck_array.controls;let i=index">
        <div>
          <ion-item no-lines>
            <ion-input [formControlName]="i" placeholder="select from list or type in"></ion-input>
          </ion-item>
        </div>
      </ion-list>
    </div>
  </ion-list>
  <ion-item style="background-color: transparent">
    <button item-start ion-fab mini color="dark" (click)="AddItemData('')">
      Add New field            
     <ion-icon name="add"></ion-icon>
    </button>
  </ion-item>
</form>

response from server i have received in pData,consider in below format

home.ts

constructor(private _fb: FormBuilder) {}

ngOnInit() {
  this.pData = {
    "ship_name": "Abit smith",
    "deck_array": [
      "MD 1",
      "MD 2"
    ],
  };

  this.myForm1 = this._fb.group({
    ship_name: [this.pData.ship_name],
    deck_array: this._fb.array([])
  });
  this.AddItemData(this.pData.deck_array);
  console.log(this.myForm1.value);
}

AddItemData(item) {
  const arrayControl = ( < FormArray > this.myForm1.get('deck_array'));
  const controls = item.map(value => this._fb.control(value));
  controls.forEach(control => arrayControl.push(control));
}

why it is not adding, can any one help me?

Thank you in advance!

2
  • Can you provide the stackblitz to show the issue? Commented Sep 1, 2018 at 17:18
  • when i click on plus button it calls AddItemData() but this function is not adding new input field to deck_array Commented Sep 1, 2018 at 17:23

1 Answer 1

1

Template:

<button item-start ion-fab mini color="dark" (click)="addItem()">
  Add New field            
  <ion-icon name="add"></ion-icon>
</button>

TypeScript:

addItem() {
    (<FormArray>this.myForm1.get('deck_array')).push(this._fb.control(''));
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.