Быстрым решением может быть совместное использование той же модели
<div class="col-md-4">
<select [(ngModel)]="selectedCompany" style="width:400px;">
<option *ngFor="let x of mycompanylist" [value]="x.name">{{x.name}}
</option>
</select>
<input class="form-control" type="text" [(ngModel)]="selectedCompany">
</div>
Так что, если пользователь, вводящий данные в поле, также обновит модель выбора.
Другим решением может быть использование ngModelChange
<div class="col-md-4">
<select [(ngModel)]="selectedCompany" style="width:400px;" (ngModelChange)="onSelectedCompany($event)">
<option *ngFor="let x of mycompanylist" [value]="x.name">{{x.name}}
</option>
</select>
<input class="form-control" type="text" [(ngModel)]="company" readonly>
</div>
app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
selectedCompany: string = null;
company: string = null;
mycompanylist = [
{ id: 1, name: 'Company 1' },
{ id: 2, name: 'Company 2' },
{ id: 3, name: 'Company 3' },
{ id: 4, name: 'Company 4' }
];
onSelectedCompany(company: string) {
this.company = company;
}
}
Важно выделить атрибут только для чтения, чтобычто пользователь не может ничего ввести