gpt4 book ai didi

javascript - 删除带有指令的特殊字符, Angular 不起作用

转载 作者:行者123 更新时间:2023-12-03 01:20:28 29 4
gpt4 key购买 nike

我想将文本转换为大写并使用指令删除输入文本的特殊字符。

指令是这样的:

import { Directive, EventEmitter, Output, Input, OnInit, ChangeDetectorRef } from '@angular/core';

@Directive({
selector: '[uppercase]',
host: {
'[value]': 'uppercase',
'(input)': 'format($event.target.value)'
}
})

export class UppercaseDirective implements OnInit {

@Input() uppercase: string;
@Output() uppercaseChange: EventEmitter<string> = new EventEmitter<string>();

constructor(private cdr: ChangeDetectorRef) {
}

ngOnInit() {
this.uppercase = this.uppercase || '';
this.format(this.uppercase);
}

format(value) {
let regNumber = /^\d+$/;
if (!value || regNumber.test(value)) return
let valueValido = value.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');
valueValido = valueValido.toUpperCase();
this.uppercaseChange.next(valueValido);
this.cdr.detectChanges();
console.log(valueValido)
}
}

}

输入继续显示特殊字符,但在日志中我可以看到该值,并且它没有更多特殊字符。我使用 '' 来替换,但不起作用,但是如果我使用任何字符或空格来替换 ex: ' ',它可以工作,但我需要替换为无值 ''。我该怎么做?

enter image description here

@编辑解决方案不起作用,代码:

   <div [ngSwitch]="input.controlType">
<div class="ui-g-12" *ngSwitchCase="'textbox'" [class.esconder]="input.hidden" >
<label for="input.key">{{input.label | doisPontos}}</label><br>
<input [formControlName]="input.key" [id]="input.key" [type]="input.type" [ngStyle]="{'width':input.width}"
pInputText [(uppercase)]="form.controls[input.key].value" [class.ui-state-error]="form.controls[input.key].touched && form.controls[input.key].invalid "
[value]="form.controls[input.key].value | removeEspecialCaractere" >
</div>

管道:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
name: 'removeEspecialCaractere'
})
export class removeEspecialCaracterePipe implements PipeTransform {
transform(value: any, args?: any): any {
return value === undefined ? '' : value.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '').toUpperCase();
}
}

最佳答案

对于文本转换,请使用管道。将管道变换放在要删除特殊字符的位置

html

 {{ p | transform}}

transform.pipe.ts

 transform(value: any, args?: any): any {
return value === undefined ? '' : value.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '').toUpperCase();
}

示例:https://stackblitz.com/edit/angular-wp12pu

关于javascript - 删除带有指令的特殊字符, Angular 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790156/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com