从 onDeactivate 访问 p-inplace 内容值
access p-inplace content value from onDeactivate
我正在使用 primeNg 的 p-inplace。我想在调用onDeactivate
时调用一个函数,使用pTemplate content.
的值
代码片段:
<p-inplace [closable]="true" (onDeactivate)="doSomething(???)">
<ng-template pTemplate="display">
<label>xxx</label>
</ng-template>
<ng-template pTemplate="content">
<input type="text" #myInput pInputText [ngModel]="someReadonlyInitialData">
</ng-template>
</p-inpace>
我想将输入到 myInput 的值发送到 ???是。如果它不在模板中,我可以通过 doSomething(myInput.value)
发送,但由于它在模板中,因此在那里无法识别。
有人对此有解决方案或解决方法吗?
很遗憾,您不能使用您已经知道的 template-variable-reference。
我解决你问题的方法是将更改保存在模板中的另一个变量中,以便你可以在需要时使用它,并将模板函数中的参数留空doSomething()
。
<p-inplace [closable]="true" (onDeactivate)="doSomething()">
<ng-template pTemplate="display">
<label>xxx</label>
</ng-template>
<ng-template pTemplate="content">
<input type="text" #myInput pInputText [ngModel]="someReadonlyInitialData" (ngModelChange)="someData = $event">
</ng-template>
</p-inpace>
在你的 ts 文件中:
someData: string;
doSomething() {
/* now your value is inside this.someData /*
}
PS:我猜你不想使用双向绑定,如果你不介意,你不需要创建第二个变量。您可以:
[(ngModel)]="someData"
除了 StPaulis 的回答,如果在表单标签中使用了 ngModel,请不要忘记添加 name 属性。
所以输入将如下所示:
<input type="text" pInputText [(ngModel)]="someData" name="someData">
我正在使用 primeNg 的 p-inplace。我想在调用onDeactivate
时调用一个函数,使用pTemplate content.
代码片段:
<p-inplace [closable]="true" (onDeactivate)="doSomething(???)">
<ng-template pTemplate="display">
<label>xxx</label>
</ng-template>
<ng-template pTemplate="content">
<input type="text" #myInput pInputText [ngModel]="someReadonlyInitialData">
</ng-template>
</p-inpace>
我想将输入到 myInput 的值发送到 ???是。如果它不在模板中,我可以通过 doSomething(myInput.value)
发送,但由于它在模板中,因此在那里无法识别。
有人对此有解决方案或解决方法吗?
很遗憾,您不能使用您已经知道的 template-variable-reference。
我解决你问题的方法是将更改保存在模板中的另一个变量中,以便你可以在需要时使用它,并将模板函数中的参数留空doSomething()
。
<p-inplace [closable]="true" (onDeactivate)="doSomething()">
<ng-template pTemplate="display">
<label>xxx</label>
</ng-template>
<ng-template pTemplate="content">
<input type="text" #myInput pInputText [ngModel]="someReadonlyInitialData" (ngModelChange)="someData = $event">
</ng-template>
</p-inpace>
在你的 ts 文件中:
someData: string;
doSomething() {
/* now your value is inside this.someData /*
}
PS:我猜你不想使用双向绑定,如果你不介意,你不需要创建第二个变量。您可以:
[(ngModel)]="someData"
除了 StPaulis 的回答,如果在表单标签中使用了 ngModel,请不要忘记添加 name 属性。 所以输入将如下所示:
<input type="text" pInputText [(ngModel)]="someData" name="someData">