typescript 更改primeng开关的值,而不是一个布尔值,我希望值被设置为'N'或'Y'

bpsygsoo  于 2023-05-08  发布在  TypeScript
关注(0)|答案(4)|浏览(105)

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

@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>
i7uq4tfw

i7uq4tfw1#

记住,这个代码

<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>

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

ghhaqwfi

ghhaqwfi2#

您可以自定义primeNg,如下例所示

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

将模型声明更改为:

booleanString: boolean = true;

请仔细阅读文档

wwtsj6pe

wwtsj6pe3#

由于PrimeNG inputSwitch只绑定为boolean,所以你需要一个change event函数,并将string值绑定到new property。
你可以使用(ngModelChange)或网站上提到的(onChange)="handleChange($event)"来实现。
看到这个工作plunker .
更新了DataTable模块的plunker。:link

a64a0gku

a64a0gku4#

试试这个:

<p-inputSwitch [(ngModel)]="l" [trueValue]="'Y'" [falseValue]="'N'"></p-inputSwitch>

相关问题