2017-10-11 58 views
-1

我是新角度。我創建了反應形式。我需要使用來自GET REST調用的值填充表單,以便我可以更新。如何從列表中填充表單以便在Angular2中更新?

列表和表單是不同的組件。點擊列表上的編輯應該帶我到一個新的URL與填充值。我應該用@Input還是observable實現它?請指出一些例子。

+0

請仔細閱讀[在什麼情況下我想補充「緊急」或其他類似的短語我的問題,爲了獲得更快的答案?](// meta.stackoverflow.com/q/326569) - 摘要這不是解決志願者問題的理想方式,而且可能會對獲得答案產生反作用。請不要將這添加到您的問題。 – halfer

回答

1

要更改通過反應形式範例構建的控件的值,請使用AbstractControl#setValueAbstractControl#patchValue方法。第一個參數是你想要設置的新值。

下面是一個使用示例。

form = this.fb.group({ 
    username: '' 
}) 

ngOnInit() { 
    this.form.setValue({username: 'Name'}) 
} 

setValuepatchValue之間的區別是setValue是嚴格的:它不會允許在更新FormGroup的價值的情況下,任何丟失或額外的字段。例如,假設我們給出了像這樣構建的表單。

form = this.fb.group({ 
    username: '', 
    password: '', 
}) 

而且我們只想更新密碼。以下將起作用。

this.form.patchValue({password: '123456'}) 

但下面會失敗,因爲我們沒有提供對username控制值。

this.form.setValue({password: '123456'}) // runtime Angular error 
+0

This worked .... also used 'onClick(id:any){ this.router.navigate(['component_name',id.id]); }' 來傳遞列表組件之間的id值以形成組件。使用單個id加載URL上的整個對象,使用id.id只加載URL中的id。 此外,我能夠從窗體組件獲取調用,以獲取窗體組件中的對象。 – Ansu