更改primeng开关的值。我希望将值设置为“N”或“Y”,而不是布尔值

时间:2017-05-17 07:14:06

标签: angular typescript primeng

我在angular 2项目中使用了primeNg p-switch。 primeNg输入开关的默认值设置为布尔值。我希望输入开关的值设置为'N'或'Y'而不是true或false

@export class MyComponent{ 
         persons: Person[] = [{'name':'Marvin','legalAge': 'Y'}, {'name':'Carla','legalAge': 'N'} ] }

在html模板中

<p-dataTable [value]="persons">
    <p-column field="name" header="Name"></p-column>
    <p-column field="legalAge" [sortable]="true" header="is Legal Age?">
        <template let-l="rowData" pTemplate>
                <p-inputSwitch [(ngModel)]="l"></p-inputSwitch> 
        </template>
    </p-column>
</p-dataTable>

3 个答案:

答案 0 :(得分:0)

您可以自定义primeNg,如下例

 public static void printToCsv(List<String> resultArray) throws Exception{

        File csvOutputFile = new File(file_name);
        FileWriter fileWriter = new FileWriter(csvOutputFile, false);


        for(String mapping : resultArray) {
            fileWriter.write(mapping + "\n");
         }

        fileWriter.close();

    }

将模型声明更改为:

<p-inputSwitch onLabel="Y" offLabel="N" [(ngModel)]="booleanString"></p-inputSwitch>

请仔细阅读文档

答案 1 :(得分:0)

由于PrimeNG inputSwitch仅绑定为boolean,因此您需要拥有更改事件函数并将string值绑定到新属性。

您可以使用(ngModelChange)website上提到的(onChange)="handleChange($event)"来执行此操作。

请参见此工作plunker

更新了DataTable模块的plunker。 :link

答案 2 :(得分:0)

请记住,此代码

<my-stuff [(foo)]="bar"></my-stuff>

只是写这个的语法糖:

 <my-stuff [foo]="bar" (fooChange)="bar = $event"></my-stuff>

双向输入的输出始终使用Change后缀和$event作为分配值的事件。这里$event是布尔值。

考虑到这一点,您可以使用p-inputSwitch

<p-inputSwitch
  [ngModel]="myProp === 'Y'"
  (ngModelChange)="myProp = $event ? 'Y' : 'N'"
></p-inputSwitch>

虽然,我不确定使用字符串而不是普通的布尔值是否是个好主意。