动态选择组件

时间:2017-12-04 16:04:18

标签: angular typescript

考虑以下简单代码:

export class TestComponent {
    mobileMessage: string;
    private mobileValidationMessages:ISchemeObject = {
        required: "Mobile is required",
        pattern:  "Mobile format is not correct"
    }

    setMessage(controlName: string): void {
        const x = <any>(controlName + "Message");
        this[x] = "Something";
    } 
}

上面我想用我喜欢的任何参数调用 setMessage(),例如 setMessage("mobile")并且能够更改mobileMessage。但是,Typescript抱怨并且不允许我这样做。我怎么能实现这个目标呢?

2 个答案:

答案 0 :(得分:2)

您可以将字符串限制为类本身的键,以使其更安全类型

export class TestComponent {

  mobileMessage: string

  setMessage(messageProp: keyof this): void {
      this[messageProp] = 'Something'
  }

  example(): void {
    this.setMessage('mobileMessage')
  }

}

答案 1 :(得分:0)

你可以使用类似的东西:

export class TestComponent {
 field: {[key: string]: string};

 setValue(fieldName: string, value: string) {
   this.field[fieldName] = value;
}