我在角度6中使用反应形式,并尝试在密码字段上进行一些验证。基本上,它必须超过8个字符,至少包含1个大写字母,并且至少包含1个符号。
我测试过的正则表达式是 ^(?=.*[A-Z])(?=.*[!@#\$%\^&\*])(?=.{9,})
这是我的登录组件ts的摘录:
ngOnInit() {
this.loginForm = this.formBuilder.group({
userName: ['Username', [Validators.required]],
password: ['Password', [Validators.pattern("^(?=.*[A-Z])(?=.*[!@#\$%\^&\*])(?=.{9,})")]]
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的表单组div:
<div class="form-group">
<input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }" />
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.pattern">Password must contain more than 8 characters, 1 upper case letter, and 1 special character</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
基本上,即使看起来正确,密码也不会生效。任何提示将不胜感激。
我已经查看了 amcharts 版本 4 ( https://www.amcharts.com/javascript-charts/ )的文档,但似乎无法找到如何将 y 轴格式化为货币。有关于以其他方式格式化 y 轴的文档,但货币似乎不是其中之一。有谁知道如何或从哪里开始?
到目前为止,我有上面的图表,只需要知道如何或在哪里将 y 轴格式化为货币。当您将鼠标悬停在格式化为货币的行上时,我目前有标签,因为这相当简单。这是我创建轴的函数:
function createAxisAndSeries(field, name, opposite) {
const valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
const series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = field;
series.dataFields.dateX = 'date';
series.strokeWidth = 2;
series.yAxis = valueAxis;
series.name = name;
series.tooltipText = '{name}: [bold]${valueY}[/]';
series.tensionX = 0.8;
const interfaceColors = new am4core.InterfaceColorSet();
valueAxis.renderer.line.strokeOpacity = 1;
valueAxis.renderer.line.strokeWidth = 2;
valueAxis.renderer.line.stroke = series.stroke;
valueAxis.renderer.labels.template.fill = series.stroke;
valueAxis.renderer.opposite = opposite;
valueAxis.renderer.grid.template.disabled = true;
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码可以正常工作:
$(function mvp() {
var theMvp = ['#mvpWtd', '#mvpStd'];
$.each(theMvp, function (index, value) {
$(value + ' .budTySales').hide();
$(value + ' .lySales').hide();
$(value + ' .budReceipts').hide();
$(value + ' .lyReceipts').hide();
});
})
Run Code Online (Sandbox Code Playgroud)
根据jquery文档,我应该能够传递多个元素,然后是逗号而不是逐行执行(代码也少!).我尝试将我的代码更改为下面但它失败了...
$(function mvp() {
var theMvp = ['#mvpWtd', '#mvpStd'];
$.each(theMvp, function (index, value) {
$(value + ' .budTySales',value + ' .lySales',value + ' .budReceipts',value + ' .lyReceipts').hide();
});
})
Run Code Online (Sandbox Code Playgroud) 不确定我哪里出错了,但我似乎无法让 ngModel 在以下情况下工作:
这是模板代码:
<mat-select [ngModel]="data.dataObject[0].phase">
<mat-option *ngFor="let phase of possiblePhases" [value]="phase">
{{phase}}
</mat-option>
</mat-select>
Run Code Online (Sandbox Code Playgroud)
这是组件中可能的相数组:
possiblePhases: string[] = ['Test1', 'Test2', 'Test3'];
Run Code Online (Sandbox Code Playgroud)
最后这里是我试图绑定一个值的数据对象:
[
选择器只返回数组中的一个值。
我试过像这样改变可能的阶段:
possiblePhases = [
{phase: 'Test1'},
{phase: 'Test2'},
{phase: 'Test3'}
];
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
我四处寻找,不确定这是否可能。本质上,我想使用 YUP 使用不是表单值的状态挂钩来验证 formik 表单。
validationSchema={Yup.object({
comments: Yup.string()
.when(approvalState, {
is: false,
then: Yup.string().required('Comments are required when denying an approval.'),
}),
})}
Run Code Online (Sandbox Code Playgroud)
这是表单字段,它本质上是一个文本框:
这是提交按钮,它将状态值更改为 true:
<button className='buttonPrimary' type='submit' onClick={()=> setApprovalState(true)} disabled={formik.isSubmitting}>Approve</button>
Run Code Online (Sandbox Code Playgroud)
这是另一个也提交的按钮,将状态值更改为 false:
<button className={`buttonSecondary ${styles.marginRight}`} type='submit' onClick={()=> setApprovalState(false)} disabled={formik.isSubmitting}>Deny</button>
Run Code Online (Sandbox Code Playgroud)
状态值更新得很好,有什么方法可以根据状态有条件地验证文本框吗?