我正在使用一个下拉列表,而 Angular 的 [选择] 标签似乎给我带来了一些问题......
看起来,尽管我的代码带回了我期望的所有内容,将显示的下拉值与事件的当前状态相匹配,但它会抛出一个错误,指出:
错误类型错误:无法读取未定义的属性"状态">
也许它试图在有机会实际查看之前为 [selected] 分配一个值?跳枪一点?
.html
<select>
<option *ngFor="let x of options" [selected]="isCurrent(x.name)">{{x.name}}</option>
</select>
元件
isCurrent(status: string): boolean {
return this.event.status == status;
}
this.event 是一个带有 makeup 的对象:
export interface IEvent extends IEntity {
date: Date; // YYYY-MM-DD'T'HH:MM:ss.SSSZ
status: string;
stage: IEntity;
entrants?: IEntrant[];
}
尝试像这样扩展isCurrent
函数:
isCurrent(status: string): boolean {
// firstly check that event exists
return this.event && this.event.status == status;
}
似乎event
在开始时未定义或为 null,并且在第一次检查运行之后异步获取值。
应避免在模板中调用方法,因为它们在每次更改检测时都会调用。请改用变量。您得到的错误是似乎event
undefined
,因此无法读取status
。您可以通过在组件中初始化它来解决这个问题:
event = <IEvent>{};
也像我建议的那样,改用变量。您可以使用它:
<select>
<option *ngFor="let x of options" [selected]="x.name === event.status">
{{x.name}}
</option>
</select>