2016-07-30 3 views
6

선택 드롭 다운 목록의 기본값으로 값을 쉽게 설정하는 방법을 모르겠습니다.angular 2 선택 옵션 기본값

내 현재 코드는

<select class="form-control" ngControl="modID" #modID="ngForm"> 
     <option *ngFor="let module of modules" [value]="module._id">{{module.moduleName}}</option> 
</select> 

나는 [선택] 장식을 가지고 노는 시도했지만 그것이 작동하는 방법을 알아 작동하지 않을 수 있습니다.

i가 이하 본 modInst의 JSON 객체 한 주어진 다음 선택리스트를 채우는 뭐죠 내가 modInst.modID [0] ._ ID를 원하는

{ 
"_id": 5, 
"semester": "Tri 3", 
"year": 2018, 
"__v": 0, 
"modID": [ 
    { 
    "_id": 6, 
    "moduleLeader": "Jake Groves", 
    "moduleName": "Software Implementation", 
    "__v": 0 
    } 
] 
}, 

모든 modules._id (모듈)로부터 선택 될

이 작업을 수행하는 쉬운 방법은 무엇입니까?

편집 :

내가 [selected]="module._id == modInst.modID[0]._id"를 추가하려고했습니다하지만 난 그것을 나는 또한 [ngValue]="modInst.modID[0]._id"을 시도했다 선택된 값

을 그 위에 더 성공을 얻을 수없고, 여전히 함께 모듈을 선택하지 않습니다 목록에서 ID 6

마지막뿐만 아니라 ... 내가 수동이 '선택'과 여전히 부하에 선택된 값을하지 않습니다 시도했습니다 [selected]="module._id == '7'"

답변

11

[(ngModel)]을 사용하면이 작업을 수행 할 수 있습니다. 는 selectedModule 대한 변수를 생성하여 컴포넌트에 JSON의 모델을로드하고 정합 모듈 ID와 동일한 값을 설정

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'awesome-component', 
    template: ` 
    <select [(ngModel)]="selectedModule"> 
    <option *ngFor="let module of modules" [value]="module._id"> {{module.moduleName}}/option> 
    </select> 
    ` 
}) 
export class AwesomeComponent { 

modules: any[]; 
selectedModule: any = null; 

loadModules(){ 
    //load you modules set selectedModule to the on with the 
    //id of modInst.modID[0]._id you can either loop or use .filter to find it. 

    } 
} 

예를 들어

<select [(ngModel)]="selectedModule"> 
    <option *ngFor="let module of modules" [value]="module._id"> {{module.moduleName}}/option> 
    </select> 

. 당신이 선택에 따라 등 비활성화 입력을 활성화해야/경우

Binding select element to object in Angular 2

는 또한 selectedModule 현재 선택된 항목의 값을 반영합니다 : 선별 된 입력에 ngModel을 사용하는 방법의 예를 들어 여기이 답변을 참조하십시오 . 원래의 문제가 숫자/문자열 ID를 사용하고 있기 때문에

Plunker example

[값] 작동한다. 그러나 객체와 같은 다른 유형을 사용하려면 [ngValue]를 사용해야합니다.

+0

아아 스냅이 너무 의미가 있습니다! select 요소에 대한 biding이 그만큼 간단하다는 것을 깨닫지 못했습니다 ... 'toggleEditing'함수가 트리거되면 selectedValue가 id xD와 같이 설정됩니다. –

+0

예상대로 작동하지 않습니다. 이 경우 'selectedModule'은 선택된 옵션의 값과 동일하게 될 것입니다 => 모듈의 객체 자체가 아닙니다 .. 이것은 전체 객체를 원할 때 모든 것을 해칩니다. 옵션은 [ngValue] (문자열이나 숫자로만 사용할 수있는 [value]가 아닌)가 "selectedModule"과 같은 객체 일 때 사용됩니다. – mp3por

+0

@ mp3por 작업중인 플 런커를 추가했습니다. 원래 질문. 당신이 [ngValue]를 사용해야하는 객체와 같은 다른 것을 사용하는 경우 상태에 대한 답변도 업데이트되었습니다. – kmcnamee