2017-04-19 42 views
3

我想詢問是否有可能將整個對象發送到所述反應形式在角2.我可以發送一個對象到反應形式嗎?

這是我的形式:

this.parameterForm = this.fb.group({ 

    'name': ['', Validators.required], 
    'description': "", 
    'parameterType':'' 
}); 

第三屬性(參數類型)應該是一個對象。 (名稱和描述均僅是純字符串

我對參數類型HTML是(formControlName用於映射它):

<label for="parameterType">Parameter Type</label> 
<select id="parameterType" class="form-control" formControlName="parameterType"> 
    <option *ngFor="let parameterType of parameterTypes" [value]="parameterType"> 
    {{parameterType.name}} 
    </option> 

</select> 

在選擇的值是對象(在別處產生)。當提交表單,我想有參數類型對象的試圖解析的形式到一個名爲參數對象提交:

export class Parameter { 

    public id: number; 
    public name: string; 
    public description: string; 

    public parameterType? : ParameterType 
} 

但是,當我嘗試在控制檯讀取結果,參數類型包含只是一個字符串「[Object object]」,這看起來像parameterType只是一個字符串,並在提交表單時,該對象轉換爲一個簡單的字符串。

我提交的功能是這樣的:

onSubmit({parameter}:{parameter: Parameter}) { 
    console.log(parameter); 
    } 

現在我只是做的話,那到參數類型IM發送的ID,並通過服務我得到的對象,但這種解決方案是不是很好。你知道我可以通過對象的形式嗎?

謝謝

+0

試着安慰參數作爲的console.log(JSON.stringify(參數));以確保參數是一個對象 – sainu

+0

stringify返回我這:{「名稱」:「輸入名稱」,「描述」:「輸入描述」,「parameterType」:「[對象對象]」}所以我認爲它現在只是一個字符串。 – arfis

回答

5

我認爲你需要使用[ngValue]而不是[value]。

2

您有幾種選擇:

比方說,我有以下形式:

user: FormGroup; 

this.user = this.formBuilder.group({ 
    account: this.formBuilder.group({ 
    email: ['', [Validators.required, Validators.pattern(EmailRegex)]], 
    password: ['', Validators.required], 
    passwordConfirm: ['', Validators.required] 
    }, { validator: this.matchingPasswords('password', 'passwordConfirm') }) 
}); 

從那裏,你可以設置你的表單的值與Object

let user: SignUp = { 
    account: { 
    email: this.mail, 
    password: '', 
    passwordConfirm: '' 
    } 
}; 
this.user.setValue(user); 

在哪裏Signup是一個接口:

export interface SignUp { 
    account: { 
    email: string; 
    password: string; 
    passwordConfirm: string; 
    } 
} 

您可以用這種方式創建表單新Object

let jsonResult = { 
    email: this.user.value.account.email, 
    password: this.user.value.account.password 
}; 

或使用該表單作爲對象從一個接口(與@Output爲例):

@Output() randomOutput= new EventEmitter<SignUp>(); 

let data: SignUp = Object.assign({}, this.user.value); 

this.randomOutput.emit(data); 
相關問題