2017-12-05 14 views
2

편집중인 각도 예제를 보면 ngModel 키워드를 사용하여 배킹 속성 이름에 할당하지 않고 한 예제를 볼 수 있습니다 .[()] 구문을 사용하지 않고 ngModel 지시문의 뒷받침 속성은 무엇입니까?

<input ngModel required type="password" class="form-control" name="password" id="password" placeholder="Password" > 

내가 일반적으로 할당하지 않고 [ngModel]="password" 또는

우리가 첫 번째 예제의 일반 ngModel 지시어를 사용하는 경우 [(ngModel)]="password"의 결합 브래킷과 함께 볼, 무엇을 백업 재산 입력 데이터에 바인딩? 그것은 무엇이든에 묶이지 않으며 form.values에서만 accesible인가? 어떤 유스 케이스에서 일반 ngModel 지시문을 사용하겠습니까? 바인딩이 필요하지 않고 양식 값에서만 액세스하려는 경우? 당신은 필드에 바인딩하지 않으려는 경우

답변

2

내 마음에 오는 유스 케이스이지만, 당신은 변경하면 다음 코드는 작동하지 않을 것입니다

<input ngModel (ngModelChange)="updateModel($event)" 

같은 모델을 업데이트하려면 ngModelChangeNgModel 지침

<input (ngModelChange)="updateModel($event)" 

일치하는 선택이 아니기 때문에, 따라서 당신은 바 ngModelNgModel 지침이 적용 얻고 ngModelChange 이벤트를 얻기 위해 추가 할 수 있습니다.

1

ngModel은 입력 필드를 ngForm 지정 문에 등록합니다. 입력의 이름이 키로 사용됩니다.

일부-component.html

<form novalidate (ngSubmit)="save(form.value)" #form="ngForm" > 
    <input type="text" name="title" ngModel /> 
    <button type="submit" [disabled]="!form.valid">save</button> 
</form> 

일부-component.ts

... 
save(value: any) { 
    console.log(value.title); 
} 

입력 필드에서 ngModel을 제거하면 다음 value.title가 없어 (정의되지 않은).