Web 使用角度2+检测输入焦点;

Web 使用角度2+检测输入焦点;,web,typescript,angular,Web,Typescript,Angular,我正在尝试创建一个自动完成列表,该列表在您键入时显示,但在您单击文档的其他位置时消失。如何使用Angular 2检测表单输入的焦点。Angular 1有ng焦点,但我认为Angular 2不再支持这一点 <input id="search-box" type="search" class="form-control [(ngModel)]=query (keyup)=filter()> <div id="search-autocomplete" *ngIf="filte

我正在尝试创建一个自动完成列表,该列表在您键入时显示,但在您单击文档的其他位置时消失。如何使用Angular 2检测表单输入的焦点。Angular 1有ng焦点,但我认为Angular 2不再支持这一点

<input id="search-box" type="search" class="form-control [(ngModel)]=query (keyup)=filter()>
    <div id="search-autocomplete" *ngIf="filteredList.length > 0">
        <ul *ngFor="#item of filteredList" >
            <li > <a (click)="select(item)">{{item}}</a> </li>
        </ul>
    </div>
0”>


  • 聚焦
    模糊
    事件:

    <input (blur)="onBlur()" (focus)="onFocus()">
    

    您可以使用ngControl指令跟踪表单字段的更改状态和有效性

    <input type="text" ngControl="name" />
    
    状态:控件的值已更改

    ng-dirty
    ng-pristine
    
    状态:控件的值有效

    ng- valid
    ng- invalid
    

    对于那些使用
    @angular/material
    的用户,您可以获得对
    MatInput
    实例的引用,该实例实现了
    MatFormFieldControl
    接口,该接口公开了一个漂亮的
    聚焦的
    属性


    您也可以使用@angular/cdk中的FocusMonitor

    focused=false;
    构造函数(fb:FormBuilder、专用fm:FocusMonitor、专用elRef:ElementRef){
    ...
    fm.monitor(elRef.nativeElement,true).subscribe(origin=>{
    这个。聚焦=!!原点;
    this.stateChanges.next();
    });
    }
    恩贡德斯特罗(){
    ...
    this.fm.stopMonitoring(this.elRef.nativeElement);
    
    }
    有帮助,但似乎没有提供焦点状态。有帮助,但问题是焦点状态。FormControl没有明确提供焦点状态。非常好!很高兴知道我们可以这样动态更改显示。
    ng- valid
    ng- invalid