select
属性を介していくつかのデータを取り込み、必要なオプションをレンダリングする単純なコンポーネントを作成しようとしています。この選択コンポーネントを別のコンポーネントのテンプレート内で使用する予定です。たとえば、PageComponent
のテンプレート( page.template.html )です。
を使用して PageComponent の変数をselect
コンポーネントにバインドしています[(ngModel)]
。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
ますが、ページの読み込み時に最初のオプション値に設定する方法がわかりません。
アップデート
元の質問には回答がありましたが、これに関してもう 1 つ質問があったので、質問を更新しました。
更新されたコードでは、select
コンポーネントはテンプレートからカスタム プロパティを受け取り、そのデフォルト値defaultValue
の条件をレンダリングします。<option>
defaultValue
が設定されている場合alertType
、その値を持つ必要があるか、そうでない場合は、options
リストの最初の項目の値を持つ必要があります。