要与必需的 Angular7/8 一起使用的条件模式

Conditional pattern to be used along with required Angular7/8

在我的模板驱动表单中,根据条件需要文本区域。我也希望模式是有条件的。我根据 angular 1.x 的问题尝试了这种语法,但它似乎不起作用。 - pattern=" condition ? '.*[^ ].*' : ''" 我也尝试过 - pattern="condition ? (\s*[^\s]+\s*)+ : .*"。 Angular 的更高版本可能吗?这是我的堆栈闪电战:https://stackblitz.com/edit/conditionalpattern

我认为如果你想传递一个表达式,你应该将模式括在方括号中。但更重要的是,您不能在标签 textarea 中使用属性 pattern,因为 pattern 不是 textarea 的允许属性.

MDN Web Docs

所述

You can't provide specific regexs to validate the value against using the pattern attribute, like you can with the input element

因此,在您的情况下,我会使用 input 或考虑使用 CustomValidator。如果您使用输入,请确保将表达式括在方括号中:

<input type="text" [pattern]="condition ? pattern : noPattern">

Here's 带有输入字段工作示例的小型 stackblitz。

你想传递任何表达式吗?试试这个: <-输入类型="text" [模式]="condition ? pattern : noPattern" >