
HTML
<form>
<input type="text"
(keyup.enter)="addTopic(topic)" #topic>
<ul class="list-group">
<li
*ngFor="let topic of topics.controls"
(click)="removeTopic(topic)"
class="list-group-item">
{{topic.value}}
</li>
</ul>
</form>
TS
import { Component } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'new-course-form',
templateUrl: './new-course-form.component.html',
styleUrls: ['./new-course-form.component.scss']
})
export class NewCourseFormComponent {
form;
constructor(fb: FormBuilder){
this.form = fb.group({
name: ['', Validators.required],
contact: fb.group({
email: [],
phone: []
}),
topics: fb.array([])
})
}
addTopic(topic: HTMLInputElement){
(this.form.get('topics') as FormArray).push(new FormControl(topic.value));
}
removeTopic(topic: FormControl){
let index = this.topics.controls.indexOf(topic);
this.topics.removeAt(index);
}
get topics(){
return this.form.get('topics') as FormArray;
}
}