title: copy validation when form control order is changed for FormArray
body: <p>I am trying to apply validation when component is dragged and dropped using angular-material drag and drop.</p>
  
  <p>Below is code of drag and drop method the form control structure: </p>
  
  <pre><code>dropComponent(event: CdkDragDrop&lt;string[]&gt;) {
  
     // Save values at previous index
     const tempControl = Object.assign({}, (this.form.controls.socialMedia as FormArray).at(event.previousIndex).value);
  
     // Change order
     (this.form.controls.socialMedia as FormArray).at(event.previousIndex).setValue(
           (this.form.controls.socialMedia as FormArray).at(event.currentIndex).value
     );
     // Clear validation
     (this.form.controls.socialMedia as FormArray).at(event.previousIndex).clearValidators();
     // Update validators according to key
     (this.form.controls.socialMedia as FormArray).at(event.previousIndex).controls.data.setValidators(
        this.getSocialValidators('key')
     ));
  
  
     (this.form.controls.socialMedia as FormArray).at(event.currentIndex).setValue(tempControl);
  
     (this.form.controls.socialMedia as FormArray).at(event.currentIndex).clearValidators();
     (this.form.controls.socialMedia as FormArray).at(event.currentIndex).controls.data.setValidators(
         this.getSocialValidators(tempControl.key)
     );
  }
  </code></pre>
  
  <p>In the above code : swapping of formControl on the basis of index is provided.
  Problem is using direct method of cdkDragDrop was that it was only shifting the values not control.</p>
  
  <p>In the above method, Validation is not getting swapped.</p>