Angular: 根据先前的选择或输入在表单上显示输入
Angular: Show inputs on form based on previous selection or input
我正在使用 VMware 的 clarity-seed 存储库,并且正在尝试构建一个输入表单来提示输入其他相关信息。例如,表单有一个用于身份验证类型的下拉列表选择。根据类型,我可能需要更多信息,并且该信息特定于该类型。 "None" auth 不需要更多信息。 "Basic" 需要用户名和密码组合,而 "OAuth" 需要 API 令牌。
我尝试使用 ng-switch 但没有成功 - 尽管选择了两个选项,但文本仍显示(我现在只使用文本,稍后将添加子表单详细信息)。
我认为我对表单字段的使用不知何故是错误的,但我不明白为什么以及如何。
<form>
<section class="form-block">
<span>New Endpoint</span>
<div class="form-group">
<label for="endpoint.name" class="required">Name</label>
<input type="text" id="endpoint.name" size="45">
</div>
<div class="form-group">
<label for="endpoint.id">Description</label>
<input type="text" id="endpoint.id" size="45">
</div>
<div class="form-group">
<label for="endpoint.url" class="required">URL</label>
<input type="url" id="endpoint.url" placeholder="http://endpoint.co/api" size="35">
</div>
<div class="form-group">
<label for="endpoint.authType">Authentication</label>
<div class="select" class="required">
<select id="endpoint.authType">
<option>None</option>
<option>Basic</option>
<option>OAuth</option>
</select>
</div>
</div>
<div ng-switch="endpoint.authType">
<div ng-switch-when="Basic">
<h1>Another form for Basic credential set</h1>
</div>
<div ng-switch-when="OAuth">
<h1>Another form for OAuth token</h1>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</section>
您可以使用 *ngIf - then ;else
的新语法:
<div *ngIf="endpoint.authType === 'Basic'"; then basic; else auth>
<ng-template #basic>
<h1>Another form for Basic credential set</h1>
</ng-template>
<ng-template #auth>
<h1>Another form for OAuth token</h1>
</ng-template>
</div>
如果你有两个以上的值,你仍然可以使用 ngSwitch:
<div [ngSwitch]="conditionExpression">
<ng-template [ngSwitchCase]="case1Exp">...</ng-template>
<ng-template ngSwitchCase="case2LiteralString">...</ng-template>
<ng-template ngSwitchDefault>...</ng-template>
</div>
我正在使用 VMware 的 clarity-seed 存储库,并且正在尝试构建一个输入表单来提示输入其他相关信息。例如,表单有一个用于身份验证类型的下拉列表选择。根据类型,我可能需要更多信息,并且该信息特定于该类型。 "None" auth 不需要更多信息。 "Basic" 需要用户名和密码组合,而 "OAuth" 需要 API 令牌。
我尝试使用 ng-switch 但没有成功 - 尽管选择了两个选项,但文本仍显示(我现在只使用文本,稍后将添加子表单详细信息)。
我认为我对表单字段的使用不知何故是错误的,但我不明白为什么以及如何。
<form>
<section class="form-block">
<span>New Endpoint</span>
<div class="form-group">
<label for="endpoint.name" class="required">Name</label>
<input type="text" id="endpoint.name" size="45">
</div>
<div class="form-group">
<label for="endpoint.id">Description</label>
<input type="text" id="endpoint.id" size="45">
</div>
<div class="form-group">
<label for="endpoint.url" class="required">URL</label>
<input type="url" id="endpoint.url" placeholder="http://endpoint.co/api" size="35">
</div>
<div class="form-group">
<label for="endpoint.authType">Authentication</label>
<div class="select" class="required">
<select id="endpoint.authType">
<option>None</option>
<option>Basic</option>
<option>OAuth</option>
</select>
</div>
</div>
<div ng-switch="endpoint.authType">
<div ng-switch-when="Basic">
<h1>Another form for Basic credential set</h1>
</div>
<div ng-switch-when="OAuth">
<h1>Another form for OAuth token</h1>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</section>
您可以使用 *ngIf - then ;else
的新语法:
<div *ngIf="endpoint.authType === 'Basic'"; then basic; else auth>
<ng-template #basic>
<h1>Another form for Basic credential set</h1>
</ng-template>
<ng-template #auth>
<h1>Another form for OAuth token</h1>
</ng-template>
</div>
如果你有两个以上的值,你仍然可以使用 ngSwitch:
<div [ngSwitch]="conditionExpression">
<ng-template [ngSwitchCase]="case1Exp">...</ng-template>
<ng-template ngSwitchCase="case2LiteralString">...</ng-template>
<ng-template ngSwitchDefault>...</ng-template>
</div>