Угловой и даталист
Мне нужна помощь, чтобы понять, как использовать HTML datalist
с угловым. У меня есть объект здесь. Я хотел бы, чтобы раскрывающийся список отображал make and model
из автомобилей. Но когда вы выбираете car
, selectedCar
переменная должна быть объектом всего автомобиля. Но input
должен показывать только make and model
,
cars = [{
make: 'Ford',
model: 'GTX',
color: 'green'
}, {
make: 'Ferarri',
model: 'Enzo',
color: 'red'
}, {
make: 'VW',
model: 'Amarok',
color: 'white'
}]
...
<input list="id-car" [(ngModel)]="selectedCar">
<datalist id="id-car">
<option *ngFor="let car of cars" [value]="car">{{car.make}} - {{car.model}}</option>
</datalist>
Вот место, где можно поиграть с этим: https://stackblitz.com/edit/angular-cwmwke
1 ответ
Использование datalist не дает вам то, что вы хотите в этом случае... вот код, который частично работает. После выбора любого элемента выпадающий список не будет отображаться так, как он показывал ранее.
попробуйте использовать выбор с опцией. Эта ссылка может помочь вам больше DataList в Angular
HTML-файл
<input list="id-car" [(ngModel)]="selectedCar"
value="{{selectedCarObj.model}} - {{selectedCarObj.make}}"
(ngModelChange)="onChange()">
<datalist id="id-car">
<option *ngFor="let car of cars" [value]="car.make">{{car.make}} - {{car.model}}</option>
</datalist>
{{selectedCarObj.model}} - {{selectedCarObj.make}}
машинописный файл
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
cars = [{
make: 'Ford',
model: 'GTX',
color: 'green'
}, {
make: 'Ferarri',
model: 'Enzo',
color: 'red'
}, {
make: 'VW',
model: 'Amarok',
color: 'white'
}];
selectedCar = "";
selectedCarObj = {};
onChange = () => {
this.selectedCarObj = this.cars.find((c)=> c .make==this.selectedCar);
console.log(this.selectedCarObj)
}
}