2017-08-07 56 views
1

我想知道檢索NgModel如果有任何的方式來檢索形式的NgForm.controls對象拉到FormControlNgModel其所屬,還是從形式直接retreive的NgModel秒。我有,一旦提交,我通過在作爲參數傳遞給一個函數,我定義的一種形式:從NgForm

<form #myForm="ngForm" name="myForm" (ngSubmit)="myFunc(myForm)"> 
    <input type="text" name="myInput" ngModel #myInput="ngModel"> 
</form> 

myFunc(form) { 
    form.controls // Gets me {[key: string]: FormControl} 
} 

我希望能夠設置屬性,從檢索到的我的控制形式(如NgModel S)和引用它們在模板與:

{{ myInput.myProp }} 

,而不是:

{{ myInput.control.myProp }} 

總體目標是在提交時將自定義屬性設置爲表單的每個NgModel,而不必從該基礎控件中提取該屬性。這是否可能和/或我是否完全用錯誤的方式去解決它?

回答

0

試試這個:

<form #myForm="ngForm" name="myForm" (ngSubmit)="myFunc(myForm)"> 
    <input type="text" name="myInput" ngModel #inp="ngModel"> 
    {{ inp.value }} 
</form> 
+0

那麼問題是我似乎無法弄清楚如何設置'in來自表單的p.value'傳入我的提交函數。我至多可以設置從'myForm.controls'中檢索到的'FormControl'的屬性,除非我不能像inp.value'那樣訪問它,而是'inp.control.value'。 –

+0

如果您試圖在TypeScript中設置表單的值,爲什麼不使用被動表單API呢?您將在TypeScript代碼中實例化表單的模型,並可以完全訪問其控件。 –

0

#myInput="ngModel"會得到一個ngModel,訪問你需要的其他模板變量#myInp

<form #myForm="ngForm" name="myForm" (ngSubmit)="myFunc(myForm)"> 
    <input #myInp type="text" name="myInput" ngModel #myInput="ngModel"> 
    {{myInp.getAttribute("my-attr")}} 
</form> 

您可以設置自定義的原生元素屬性值是這樣的:

@ViewChild("myInp") myInput: ElementRef; 
myFunc(form) { 
    this.myInput.nativeElement.setAttribute('my-attr', 'attr: ' + form.value.myInput); 
} 
相關問題