2017-04-20 192 views
0

一些性質我創建在角2,並把字段的表單用於FormBuilder:複製從一個對象到另一

ngOnInit() { 
this.countryOfResidence = new FormControl(this.naturalPerson.countryOfResidence) 
this.firstName = new FormControl(this.naturalPerson.firstName, [Validators.required, Validators.maxLength(30)]) 
this.middleName = new FormControl(this.naturalPerson.middleName, [Validators.required, Validators.maxLength(30)]) 
this.lastName = new FormControl(this.naturalPerson.lastName, [Validators.required, Validators.maxLength(60)]) 
this.NIN = new FormControl(this.naturalPerson.NIN) 
this.countryOfBirth = new FormControl(this.naturalPerson.countryOfBirth) 
this.birthDate = new FormControl(this.naturalPerson.birthDate) 
this.citizenship = new FormControl(this.naturalPerson.citizenship) 

this.primaryDataForm = this.fb.group({ 
    countryOfResidence: this.countryOfResidence, 
    firstName: this.firstName, 
    middleName: this.middleName, 
    lastName: this.lastName, 
    NIN: this.NIN, 
    countryOfBirth: this.countryOfBirth, 
    birthDate: this.birthDate, 
    citizenship: this.citizenship 
}) 
} 

由此我指的是組件字段。有更好的語法嗎?嘗試傳播/休息運營商:

let obj = ({ 
    countryOfResidence, 
    firstName, 
    middleName, 
    lastName, 
    NIN, 
    countryOfBirth, 
    birthDate, 
    citizenship 
} = this) 

但它不工作......我敢肯定它可以簡化。我怎樣才能做到這一點?

編輯:我的package.json

{ 
    "dependencies": { 
    "@angular/animations": "4.0.2", 
    "@angular/common": "4.0.2", 
    "@angular/compiler": "4.0.2", 
    "@angular/compiler-cli": "4.0.2", 
    "@angular/core": "4.0.2", 
    "@angular/forms": "4.0.2", 
    "@angular/http": "4.0.2", 
    "@angular/platform-browser": "4.0.2", 
    "@angular/platform-browser-dynamic": "4.0.2", 
    "@angular/platform-server": "4.0.2", 
    "@angular/router": "4.0.2", 
    "angular-l10n": "^3.0.3", 
    "bootstrap": "4.0.0-alpha.6", 
    "core-js": "2.4.1", 
    "rxjs": "5.1.0", 
    "typescript": "2.2.2", 
    "zone.js": "0.8.4" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.0.0", 
    "@angular/compiler-cli": "4.0.0", 
    "@types/jasmine": "2.5.38", 
    "@types/node": "6.0.60", 
    "codelyzer": "2.0.0", 
    "jasmine-core": "2.5.2", 
    "jasmine-spec-reporter": "3.2.0", 
    "karma": "1.4.1", 
    "karma-chrome-launcher": "2.0.0", 
    "karma-cli": "1.0.1", 
    "karma-jasmine": "1.1.0", 
    "karma-jasmine-html-reporter": "0.2.2", 
    "karma-coverage-istanbul-reporter": "0.2.0", 
    "protractor": "5.1.0", 
    "ts-node": "2.0.0", 
    "tslint": "4.5.0", 
    "typescript": "2.2.0" 
    } 
} 
+0

你知道通過'let','var'或'const'局部變量? –

+0

@TatsuyukiIshi我不太明白,你能否詳細說明一下? –

回答

0

我想你錯過了局部變量,其名稱可只在函數內部的概念。有關說明,請參閱What is the scope of variables in JavaScript?

隨着ES6對象初始化速記,代碼爲:

ngOnInit() { 
    const countryOfResidence = new FormControl(this.naturalPerson.countryOfResidence) 
    const firstName = new FormControl(this.naturalPerson.firstName, [Validators.required, Validators.maxLength(30)]) 
    const middleName = new FormControl(this.naturalPerson.middleName, [Validators.required, Validators.maxLength(30)]) 
    const lastName = new FormControl(this.naturalPerson.lastName, [Validators.required, Validators.maxLength(60)]) 
    const NIN = new FormControl(this.naturalPerson.NIN) 
    const countryOfBirth = new FormControl(this.naturalPerson.countryOfBirth) 
    const birthDate = new FormControl(this.naturalPerson.birthDate) 
    const citizenship = new FormControl(this.naturalPerson.citizenship) 

    this.primaryDataForm = this.fb.group({ 
    countryOfResidence, 
    firstName, 
    middleName, 
    lastName, 
    NIN, 
    countryOfBirth, 
    birthDate, 
    citizenship 
    }) 
} 
相關問題