Q: Angular 4 formArrayName for drop-down list I can pass value in following way 
template:
<td formArrayName="itemnameS">
<div *ngFor="let itemname of itemnameS.controls; let i=index">
<input [formControlName]="i" placeholder="Item Name">
</div>

component.ts:
form = new FormGroup({
    itemnameS: new FormArray([
      new FormControl('Gloves'),
      new FormControl('Gauze'),
      new FormControl('Needles'),
    ]),
    quantitieS: new FormArray([
      new FormControl(''),
    ]),
  });

Could please let me know how it is possible for drop down list as follows:
<select  formArrayName="itemnameS">
<option *ngFor="let itemname of itemnameS.controls; let i=index" >
                {{ ?? }}
</option>
</select>

Should look like as bellow:


A: You shouldn't create formArray : 
form = new FormGroup({
    itemnameS: new FormArray([null]), // null to have at least one item initially
    quantitieS: new FormArray([
      new FormControl(''),
    ]),
  });

this.myItems = ['Gloves','Gauze','Needles'];

and then : 
<div *ngFor="let control of form.get('itemnameS').controls ; let i = index" >
      <select  formControlName="control">
           <option *ngFor="let itemname of myItems; let i=index [value]='itemname' >
                {{ itemname }}
     </option>
</select>
  <button (click)="addNewOne()">Add</button>

        <button (click)="remove(i)">Remove</button>
</div>

Don't forget, a select is simply a user input and a user input could only have one controller, so one formControl must be assigned to it because eventually it's gonna have one value saved to your database.
and then if you wanted to implement the add new item functionality : 
 addANewOne(){
     this.form.get('itemnameS').push(new FormControl())

  }

and for remove 
 remove(index){
     this.form.get('itemnameS').removeAt(index)

  }

