【发布时间】:2017-08-26 02:46:42
【问题描述】:
在我的应用程序中,我尝试放置一个按钮来显示/隐藏带有 boolean 组件属性的 input 字段。如果按钮显示input,则焦点应设置在input。但这似乎不起作用。如果我删除 *ngIf,焦点指令可以正常工作。
我创建了一个 plunker 来表达我的意思。描述我的问题有点困难。
组件中的 HTML:
<input *ngIf="filterShow.options"
[focus]="filterFocus.options"
[(ngModel)]="filter.options">
<button type="button"
(click)="setShowFilter('options')">
focus
</button>
setShowFilter()方法:
private setShowFilter(filter: string) {
this.filterShow[filter] = !this.filterShow[filter];
/* reset filter */
this.filter[filter] = "";
this.filterFocus[filter].emit(true);
}
focus.directive.ts:
@Directive({
selector: '[focus]'
})
export class FocusDirective implements OnInit {
@Input('focus') focusEvent: EventEmitter<boolean>;
constructor(private elementRef : ElementRef,
private renderer : Renderer ) { }
ngOnInit() {
this.focusEvent.subscribe(event => {
this.renderer
.invokeElementMethod(this.elementRef.nativeElement, 'focus', []);
});
}
}
【问题讨论】:
标签: angular input focus angular-ng-if