2017-04-20 134 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 
    }) 
} 
相关问题