在下拉搜索

时间:2016-10-17 05:04:02

标签: angular

在angular 2中,我尝试使用select2和semantic-ui下拉列表来使用下拉搜索。它没有默认值时没关系。但是当我在页面编辑数据中设置默认值时,数据不会显示默认值。仅当我使用" setTimeout()"时它才会显示值。无论如何,我可以在没有setTimeout的情况下显示默认值吗?

html(select2版本)

<select class="form-control select2" id="input-contactperson" (change)="setContactPerson($event.target.value)">
   <option value="" disabled>please select</option>
   <option *ngFor="let contactperson of objContactPerson" [selected]="contactperson.contactPersonId == contactPerson" value="{{contactperson.contactPersonId}}">{{contactperson.contactPersonName}}</option>
</select>

html(语义版)

<select class="form-control ui fluid search dropdown" id="input-contactperson" (change)="setContactPerson($event.target.value)">
   <option value="" data-value="">please select</option>
   <option *ngFor="let contactperson of objContactPerson" [selected]="contactperson.contactPersonId == contactPerson" value="{{contactperson.contactPersonId}}">{{contactperson.contactPersonName}}</option>
</select>

在上面的html中,我使用[selected]来匹配值,而contactPerson等于contactperson.contactPersonId它不会显示我是否不使用setTimeout()

成分<​​/ P>

setTimeout(function () {
    // $("#input-contactperson").select2("val", contactpersonid); //select 2
    $(".ui.dropdown").dropdown("set selected", contactpersonid); // semantic
}, 500);

2 个答案:

答案 0 :(得分:1)

使用[attr.value]设置下拉值。

ex:[attr.value] =“contactperson.contactPersonId”

{{contactperson.contactPersonName}}

使用null安全操作符

{{contactperson?.contactPersonName}}

另外,看看你是否在控制台中遇到任何异常。可能就是这种情况,因为您可能尝试访问呈现模板UI时不可用的数据。 像上面一样使用null安全操作符“?”。这将推迟null / undefined值,当值可用时,模板将显示数据。

正如您所提到的,数据仅在超时后显示。尝试null安全操作符。它应该工作,你不需要暂停。

答案 1 :(得分:0)

<select class="select-state" #playerState (change)="0" [(ngModel)]="variable"
        value="{{variable}}"
        [disabled]="isPlayerInfoDisabled" [ngClass]="{'highlight':contactInfoError.has('INVALIDSTATE') && isHighlight == true}">
    <option *ngFor="let s of states; let i = index" [attr.value]="s">{{statesValue[i]}}</option>
</select>

就像我为我做的那样,参考这个例子。 除非你正在做其他事情,否则它肯定会奏效。 在类中将此变量定义为变量:number = 0