Vio*_*ola 3 html dropdown angular
我有数据库表airline,我想显示drop down list表中的所有数据,然后能够从列表中选择一个项目.
我的桌子
airline.ts
export class Airline {
airline_id: number;
name: string;
symbol: string;
}
Run Code Online (Sandbox Code Playgroud)
我的HTML代码,但它不起作用(仅显示没有数据的下拉列表):
<mat-form-field>
<mat-select placeholder="Airlines" [(ngModel)]="selectedValue" name="airline">
<mat-option *ngFor="let airline of airlines" [value]="airline.name">
{{airline.symbol}}
</mat-option>
</mat-select>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
实际上它看起来像这样(列表中没有数据):
airlineService.ts
export class AirlineService {
private baseUrl = 'http://localhost:8080/api/airlines';
constructor(private http: HttpClient) {
}
getAirline(airline_id: number): Observable<Airline> {
return this.http.get<Airline>(`${this.baseUrl}/${airline_id}`);
}
getAirlinesList(): Observable<any> {
return this.http.get(`${this.baseUrl}`);
}
}
Run Code Online (Sandbox Code Playgroud)
航空公司,list.component.ts
export class AirlinesListComponent implements OnInit {
airlines: Observable<Airline[]>;
airline_id: number;
selectedValue: string;
@Input() airline: Airline;
constructor(private airlineService: AirlineService) { }
ngOnInit() {
this.reloadData();
}
reloadData() {
this.airlines = this.airlineService.getAirlinesList();
}
}
Run Code Online (Sandbox Code Playgroud)
由于您将airlines变量声明为Observable,因此在模板中引用变量时需要对其进行处理.
改变你的意见ngFor:
*ngFor="let airline of airlines"
Run Code Online (Sandbox Code Playgroud)
对此:
*ngFor="let airline of (airlines | async)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |