2016-12-30 1 views
1

없이 나는 아래의 HTML이 작동하지 않습니다Angular2 양식 변수는 ngModel

<form #f="ngForm"> 
    <input type="text" name="dd" value="abc" (change)="foof(f.form.value)"/> 
</form> 

그러나, f.form.value이 foof 기능이 I는 입력 텍스트 값을 변경할 때 호출 할 때 거기에 아무것도 없습니다. 내가

<input type="text" name="dd" [ngModel]="abc" (change)="foof(f.form.value)"/> 

, 아래와 같이 입력 요소에 ngModel를 추가 할 경우에만 그 다음 f.form.value는 DD 입력 텍스트 값이 있습니다. 왜 그런지 이해가 안됩니다. 양식 변수가 올바르게 작동하도록 ngModel을 사용해야합니까?

참고 : 우리의 응용 프로그램의 특정 이유로, 우리는 dd 입력이 변경되었을 때 전체 양식을 제출해야하므로 foof (f.form.value)가 필요합니다. 또한 양방향 바인딩, 모델과 html 레이아웃 간의 차이로 인해 단방향 바인딩 만하는 것을 원하지 않습니다.

답변

1

은 당신이 할 수있는 생각이 같은 해킹 :

<form #f="ngForm"> 
    <input type="text" id="someInput" value="abc" (change)="foof()"/> 
</form> 

x:any; 

foof() { 
    this.x = document.getElementById("someInput"); 
    console.log(this.x.value); 
} 

의 앱을 모르는 ,이 (끔찍한) 해킹이 사용자의 요구에 전혀 맞지 않을 수도 있습니다.

+0

감사합니다 !! 이 문제를 해결하고 여러 구성 요소에 걸쳐 양식을 분산시켜야하는 또 다른 문제를 해결하고 반응 형 양식을 사용하지 않고 템플릿 기반 양식을 사용했습니다. 자바 스크립트를 사용하면 가능합니다! – vanval

+0

좋습니다! 다행스럽게 도울 수있어! :) – Alex

0

입력 필드에 바인딩하는 방법이라고 생각하지 않습니다.

당신이처럼 일을해야

,

<input type="text" name="dd" [(ngModel)]="abc" (ngModelChange)="foof(abc)"/> 
+0

우리의 응용 프로그램에서 어떤 이유로 dd 입력이 변경되면 전체 양식을 제출해야하므로 foof (f.form.value)가 필요합니다. 또한 양방향 바인딩, 모델과 html 레이아웃 간의 차이로 인해 단방향 바인딩 만하는 것을 원하지 않습니다. – vanval

관련 문제