使用Angular 5,我创建了一个下拉列表,其中包含使用Firebase数据填充的选项。即使填充了选项,我的ngModel也是未定义的,除非我更改选项。如果使用默认选项而不先更改为另一个选项,我该怎么做?
这是HTML:
<select name="reviewer" [(ngModel)]="reviewer">
<option *ngFor="let editor of editors" [ngValue]="editor.$value">{{editor.$value}}</option>
</select>
这是TS:
export class CreateComponent implements OnInit {
reviewer;
constructor(...) {
alert(this.reviewer); //undefined unless changed to another option
}
}
答案 0 :(得分:0)
在角度生命周期中,首先执行构造函数。它在视图初始化之前执行。在你的代码中,你在构造函数中使用了this.reviewer,那时你的变量尚未初始化。所以它给出了一个未定义的值。 但是,一旦更改了下拉值,由于[(ngModel)]数据绑定,将为审阅者变量分配一个新值。
如果您在声明变量时或在警报之前为审阅者变量分配了默认值,则不会给出未定义的值。
例如:
export class CreateComponent implements OnInit {
reviewer;
constructor(...) {
this.reviewer=editors[0] //you can assign a default value here
alert(this.reviewer); //undefined unless changed to another option
}
}
从这里了解角度生命周期