【问题标题】:Angular2 - how to setup radio button option to use a dynamic valueAngular2 - 如何设置单选按钮选项以使用动态值
【发布时间】:2017-05-03 11:32:12
【问题描述】:

我有一个Proposal 组件,用户可以在其中从单选按钮中选择一个值:

  public salutations = [
    { value: 0, display: 'Mr & Mrs' },
    { value: 1, display: 'Mrs' },
    { value: 2, display: 'Ms'},
    { value: 3, display: 'Mr'},
    { value: 4, display: 'proposal.first_name'}
  ];

在每种情况下,所选选项都存储在Proposal.greeting 字段中。我不存储值,而是实际的显示属性。

  <div *ngFor="let salutation of salutations">
    <label>
      <input type="radio" name="salutation" [(ngModel)]="proposal.salutation" 
        [value]="salutation.display"> <!-- we DO NOT want to store the integer value -->
        {{salutation.display}}
    </label>
  </div>

如您所见,当用户选择选项 4 时,其目的是存储提议者的实际姓名(proposal.first_name)。

这是因为后来我有一个看起来像这样的视图:

<p>Dear {{proposal.greeting}} {{proposal.last_name}},</p>

那么我怎样才能使选项 4 动态化(以便在选择时它存储 first_name 而不是字符串 'proposal.first_name')。

【问题讨论】:

    标签: angular radio-button angular2-template


    【解决方案1】:

    你需要去掉 TypeScript 中 proposal.firstname 周围的引号。因为salutations 是在.ts 文件而不是html 中声明的,所以Angular 不会执行插值。此外,您需要添加 this. 前缀。

    public salutations = [
        { value: 0, display: 'Mr & Mrs' },
        { value: 1, display: 'Mrs' },
        { value: 2, display: 'Ms'},
        { value: 3, display: 'Mr'},
        { value: 4, display: this.proposal.first_name} 
      ];
    

    查看我整理的plunkr

    【讨论】:

    • 谢谢,很好的回答,我可以看到朋克作品。问题是,这是在创建新提案时使用的,因此此时“this.proposal.first_name”的值为空,因此选项 4 在屏幕上看不到任何内容。
    • 我能想到的唯一解决方案是使单选按钮成为一个子组件,将 first_name 作为输入并输出选择的选项。对于这样一个简单的问题,似乎需要做很多工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2018-01-31
    • 2019-03-25
    • 2012-03-17
    • 2013-10-18
    相关资源
    最近更新 更多