我正在尝试创建一个简单的select
组件,它通过属性接收一些数据并呈现所需的选项。我打算在另一个组件的模板中使用这个选择组件,比如PageComponent
模板(page.template.html)。
我将 PageComponent 的变量绑定到select
使用[(ngModel)]
. 选择一个选项后,变量 get 的值会按预期更新,但是如何在页面加载时将其设置为指向第一个选项而不触发select
组件上的手动选择?
这是代码。
在 page.template.html
<select ui-select
[options]="options"
[(ngModel)]="alertType"
[defaultValue]="'Select an alert Type'">
</select>
{{alertType}} <!-- To see the value while debugging -->
在 page.component.ts 中,PageComponent
类
alertType:any;
options = [
{id:1, value:"item-1"},
{id:2, value:"item-2"},
{id:3, value:"item-3"}
];
在 select.component.ts
import {Component, Input} from '@angular/core'
@Component({
selector: '[ui-select]',
template: `
<option *ngIf="defaultValue" value="-1">{{defaultValue}}</option>
<option *ngFor="let option of options" [value]="option.id">{{option.value}}</option>
`
})
export class SelectComponent {
@Input() options: any;
@Input() defaultValue: string;
}
现在,该值最初不显示任何内容,并且仅在从框中{{alertType}}
选择新选项时才会更新。select
我确实知道它正在发生,因为alertType
默认情况下设置为未定义,PageComponent
但我不知道如何在页面加载时将其设置为第一个选项值。
更新
原始问题已得到解答,但我对此还有一个问题,因此更新了问题。
在更新后的代码中,select
组件接受defaultValue
来自模板的自定义属性并呈现<option>
该默认值的条件。
现在,我怎么说如果defaultValue
已设置,alertType
应该具有该值,否则它应该具有options
列表中第一项的值。