将输入集中在自定义 Angular MatFormFieldControl 中
Focus an input inside a custom Angular MatFormFieldControl
如何让我的父组件在页面加载时专注于自定义 MatFormFieldControl
中的 asset1
输入字段*?
父组件HTML:
<mat-form-field class="symbol">
<symbol-input
name="symbol"
placeholder="Symbol"
ngModel
#symbolInput="ngModel"
[(ngModel)]="symbol"></symbol-input>
</mat-form-field>
自定义 MatFormFieldControl
HTML:
<div [formGroup]="parts">
<input class="asset1" formControlName="asset1" size="12">
<span class="input-spacer">⁄</span>
<input class="asset2" formControlName="asset2" size="12">
</div>
*我假设我将在父组件中实现 AfterViewInit
并希望触发一个 focus
事件,该事件将逐渐下降?
@IvanS95 为我指出了正确的方向。
向我的父组件添加了 ViewChild
:
@ViewChild(SymbolInputComponent) set focus(sic: SymbolInputComponent) {
sic.autofocus = true;
};
然后我在我的自定义 MatFormFieldControl
中添加了一个 public 变量 autofocus
设置为 false。如果我需要在给定页面上多次使用此字段。
然后我将 autofocus
添加到我的 MatFormFieldControl
模板中:
<div [formGroup]="parts">
<input class="asset1" formControlName="asset1" size="12" [autofocus]="autofocus">
<span class="input-spacer">⁄</span>
<input class="asset2" formControlName="asset2" size="12">
</div>
如何让我的父组件在页面加载时专注于自定义 MatFormFieldControl
中的 asset1
输入字段*?
父组件HTML:
<mat-form-field class="symbol">
<symbol-input
name="symbol"
placeholder="Symbol"
ngModel
#symbolInput="ngModel"
[(ngModel)]="symbol"></symbol-input>
</mat-form-field>
自定义 MatFormFieldControl
HTML:
<div [formGroup]="parts">
<input class="asset1" formControlName="asset1" size="12">
<span class="input-spacer">⁄</span>
<input class="asset2" formControlName="asset2" size="12">
</div>
*我假设我将在父组件中实现 AfterViewInit
并希望触发一个 focus
事件,该事件将逐渐下降?
@IvanS95 为我指出了正确的方向。
向我的父组件添加了 ViewChild
:
@ViewChild(SymbolInputComponent) set focus(sic: SymbolInputComponent) {
sic.autofocus = true;
};
然后我在我的自定义 MatFormFieldControl
中添加了一个 public 变量 autofocus
设置为 false。如果我需要在给定页面上多次使用此字段。
然后我将 autofocus
添加到我的 MatFormFieldControl
模板中:
<div [formGroup]="parts">
<input class="asset1" formControlName="asset1" size="12" [autofocus]="autofocus">
<span class="input-spacer">⁄</span>
<input class="asset2" formControlName="asset2" size="12">
</div>