NgFor 不要在 mat-select html 语句中列出我的项目
NgFor dont list my items in the mat-select html statement
我有一个 class 获取对象“Saison”的列表,我想将它们列在 select 语句中:
@Component({
selector: 'jhi-saisons',
templateUrl: './saison-home.component.html',
})
export class SaisonHomeComponent implements OnInit {
saisonList?: ISaison[];
constructor(protected saisonService: SaisonService) {}
ngOnInit(): void {
this.loadAllSaisons();
}
/**
* Charge toutes les saisons dans la propriété saisonList
*/
loadAllSaisons(): void {
const sortOrder = { sort: ['anneeSaison'] };
this.saisonService.query(sortOrder).subscribe(
(res: HttpResponse<ISaison[]>) => {
this.saisonList = res.body ?? [];
}
);
}
}
赛森有这个型号:
export interface ISaison {
id?: number;
anneeSaison?: string;
estActiveSaison?: boolean | null;
}
export class Saison implements ISaison {
constructor(public id?: number, public anneeSaison?: string, public estActiveSaison?: boolean | null) {
this.estActiveSaison = this.estActiveSaison ?? false;
}
}
export function getSaisonIdentifier(saison: ISaison): number | undefined {
return saison.id;
}
订阅return这些值:
[
{
"id": 1,
"anneeSaison": "2019",
"estActiveSaison": false
},
{
"id": 2,
"anneeSaison": "2020",
"estActiveSaison": false
},
{
"id": 3,
"anneeSaison": "2021",
"estActiveSaison": true
},
{
"id": 4,
"anneeSaison": "2022",
"estActiveSaison": false
},
{
"id": 5,
"anneeSaison": "2023",
"estActiveSaison": false
}
]
所以在我的 html 模板中,我使用 NgFor 将它们放入我的 select :
<mat-form-field apparence = "fill">
<mat-label jhiTranslate="pdf4PwebApp.saison.dashboard.selectSaison">SELECT SAISON</mat-label>
<mat-select >
<mat-option *ngFor="let saison of saisonList" [value]="saison.id">
{{saison.anneeSaison}}
</mat-option>
</mat-select>
</mat-form-field>
但是我的 mat-select 语句中什么也没有:
你明白为什么没有值吗?
PS :我使用“Angular Material Design” (mat-select) 并遵循此文档:https://material.angular.io/components/select/overview 。我还在 vendor.scss 中添加了这个导入(对于 mat-slide-toggle 语句)。
@import '~@angular/material/prebuilt-themes/indigo-pink.css';
是否缺少另一个特定的导入?
编辑 1
来自 HttpResponse 的 Console.log 结果:
看来你的代码没有问题~
所以我猜 saisonList
是空的。
我建议您尝试在 html 中使用 json
管道,并检查 saisonList
是否有价值。
我认为你的 html 在你获取数据之前渲染了,所以尝试 *ngIf="saisonList"
on mat select
或将您的 return 值写在 getter
像这样:
get data(): ISaison[] {
return this.saisonList;
}
并将 *ngFor 中的 saisonList 更改为数据(或您要为 getter 设置的任何名称)。
我有一个 class 获取对象“Saison”的列表,我想将它们列在 select 语句中:
@Component({
selector: 'jhi-saisons',
templateUrl: './saison-home.component.html',
})
export class SaisonHomeComponent implements OnInit {
saisonList?: ISaison[];
constructor(protected saisonService: SaisonService) {}
ngOnInit(): void {
this.loadAllSaisons();
}
/**
* Charge toutes les saisons dans la propriété saisonList
*/
loadAllSaisons(): void {
const sortOrder = { sort: ['anneeSaison'] };
this.saisonService.query(sortOrder).subscribe(
(res: HttpResponse<ISaison[]>) => {
this.saisonList = res.body ?? [];
}
);
}
}
赛森有这个型号:
export interface ISaison {
id?: number;
anneeSaison?: string;
estActiveSaison?: boolean | null;
}
export class Saison implements ISaison {
constructor(public id?: number, public anneeSaison?: string, public estActiveSaison?: boolean | null) {
this.estActiveSaison = this.estActiveSaison ?? false;
}
}
export function getSaisonIdentifier(saison: ISaison): number | undefined {
return saison.id;
}
订阅return这些值:
[
{
"id": 1,
"anneeSaison": "2019",
"estActiveSaison": false
},
{
"id": 2,
"anneeSaison": "2020",
"estActiveSaison": false
},
{
"id": 3,
"anneeSaison": "2021",
"estActiveSaison": true
},
{
"id": 4,
"anneeSaison": "2022",
"estActiveSaison": false
},
{
"id": 5,
"anneeSaison": "2023",
"estActiveSaison": false
}
]
所以在我的 html 模板中,我使用 NgFor 将它们放入我的 select :
<mat-form-field apparence = "fill">
<mat-label jhiTranslate="pdf4PwebApp.saison.dashboard.selectSaison">SELECT SAISON</mat-label>
<mat-select >
<mat-option *ngFor="let saison of saisonList" [value]="saison.id">
{{saison.anneeSaison}}
</mat-option>
</mat-select>
</mat-form-field>
但是我的 mat-select 语句中什么也没有:
你明白为什么没有值吗?
PS :我使用“Angular Material Design” (mat-select) 并遵循此文档:https://material.angular.io/components/select/overview 。我还在 vendor.scss 中添加了这个导入(对于 mat-slide-toggle 语句)。
@import '~@angular/material/prebuilt-themes/indigo-pink.css';
是否缺少另一个特定的导入?
编辑 1
来自 HttpResponse 的 Console.log 结果:
看来你的代码没有问题~
所以我猜 saisonList
是空的。
我建议您尝试在 html 中使用 json
管道,并检查 saisonList
是否有价值。
我认为你的 html 在你获取数据之前渲染了,所以尝试 *ngIf="saisonList"
on mat select
或将您的 return 值写在 getter 像这样:
get data(): ISaison[] {
return this.saisonList;
}
并将 *ngFor 中的 saisonList 更改为数据(或您要为 getter 设置的任何名称)。