我正在努力使 Angular Material 表单验证与 Angular Template 表单一起工作。所有示例仅适用于反应形式。
我正在以以下形式生成模板 Angular Material 模板表单:
<mat-form-field *ngSwitchCase="'text'" class="entity-form-field" appearance="outline">
<input matInput [placeholder]="field.title" [value]="getValue(field)"
(change)="setValue(field, $event)" [required]="field.req" [id]="field.id">
<mat-error *ngIf="fieldInvalid(field)">{{getErrorMessage(field)}}</mat-error>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
无论fieldInvalid和getErrorMessage工作正常,因此该领域的错误消息应该是可见的。如果我将其更改为不同的标签,则它将可见:
<p *ngIf="fieldInvalid(field)">{{getErrorMessage(field)}}</p>
我知道 Reative Forms 必须更改输入的状态才能更改其样式以使其可见。
有没有办法对简单的模板表单做同样的事情?我可能也可以应用 Angular Material 错误样式,但我找不到文档。
是否有使用理解创建多维数组的语法是F#?这对于锯齿状数组非常容易:
let weights1 = [|
[|3.0|]
[|1.0|]
|]
Run Code Online (Sandbox Code Playgroud)
当然,我可以将这个锯齿状数组转换为多维数组:
let weights = Array2D.init 2 2 (fun i j -> weights1.[i].[j])
Run Code Online (Sandbox Code Playgroud)
但是,有没有一种语法方式做同样的事情?
我试图为以下代码找到一个功能正确的方法:
let mutable u = initialize cities pms
for i in 0 .. 10 do
u <- randomIteration u pms distances
Run Code Online (Sandbox Code Playgroud)
randomIteration是一个简单的函数,它接受一个带有2个参数的数组并返回一个修改过的数组.这个过程必须重复n次(这里10).
我提出了一个使用折叠的解决方案,但我正在创建一个"虚拟"序列,只是为了能够折叠它,这似乎不对.
let result = Seq.init 10 (fun i -> i) |> Seq.fold (fun uNext i -> randomIteration uNext pms distances) u
Run Code Online (Sandbox Code Playgroud)
我也可以使用带有计数器变量的递归,但这似乎很尴尬.我只是错过了一个简单的正确解决方案?
我想对 mat-menu 的内容应用动态样式。我知道我可以使用panelClass来分配一个类,但我的类是动态的。
对于这种情况,Angular 具有[ngStyle]或仅[style.attribute]绑定,但这不适用于 mat-menu(或其他叠加层),它仅适用于直接渲染的元素。
我正在寻找像panelStyle这样的东西,它允许我直接在包含 mat-menu 的面板上动态设置样式。
这是一个代码示例,其中 panelClass 允许我设置一些 css,但只有静态一个,ngStyle 没用。
<mat-menu [ngStyle]="{'background-color': colorVariable }" panelClass="some-static-class-works">
Run Code Online (Sandbox Code Playgroud)
我在找什么:
<mat-menu [panelStyle]="{'background-color': colorVariable }">
Run Code Online (Sandbox Code Playgroud)