Я предлагаю вам использовать реактивную форму, все гораздо понятнее и проще для понимания.Используя реактивную форму, я сделаю что-то вроде этого:
в шаблоне:
<form [formGroup]="roomForm">
<select class="form-control" formControlName="roomType">
<option *ngFor="let opt of types" [ngValue]="opt">{{ opt.label }}</option>
</select>
<select class="form-control" formControlName="roomNumber">
<option *ngFor="let opt of nums" [ngValue]="opt">{{ opt.label }}</option>
</select>
<input class="form-control" formControlName="inputString"/>
</form>
и в компоненте:
export class Component implements OnInit {
nums = [{label: 'label 1', value: 1 }, {label: 'label 2', value: 2}, {label: 'label 3', value: 3}];
types = [{label: 'label a', value: 'a'}, {label: 'label b', value: 'b'}, {label: 'label c', value:'c'}];
inputNum: string = '';
inputType: string = '';
subs: Subscription[] = [];
roomForm: FormGroup;
ngOnInit() {
this.roomForm = new FormGroup({
roomType: new FormControl(),
roomNumber: new FormControl(),
inputString: new FormControl()
})
this.subs.push(
this.roomForm.get('roomType').valueChanges.subscribe((val) => {
this.inputType = val.label;
this.roomForm.get('inputString').setValue(this.inputNum + this.inputType);
})
)
this.subs.push(
this.roomForm.get('roomNumber').valueChanges.subscribe((val) => {
this.inputNum = val.label;
this.roomForm.get('inputString').setValue(this.inputNum.toString() + this.inputType);
})
)
}
}
Чтобы использовать реактивную форму, вы должны импортировать вВаш модуль ReactiveFormsModule.Надеюсь, что это может решить вашу проблему!