繁体   English   中英

我们如何使用 angular 2+ 组件中的输入:焦点选择器?

[英]How do we use the input:focus selector in angular 2+ component?

我有一个包含以下内容的表单:

<div class="form-field">
<input-component [tabIndex]="tabData.tabEnable"></input-component>
</div>
<div class="form-field">
<input [tabIndex]="tabData.tabEnable" matInput cgiPrecision type="number"/>
</div>

在 css 我有这个:

input:focus {
border: $border-width solid $darkblue
}

但是边框只显示在输入元素上,而不是在其中包含输入输入组件组件上。 如何获得输入:焦点也适用于自定义 angular 组件?

您的自定义组件应侦听focus事件,然后聚焦输入。

@Component({
  selector: 'custom-input',
  template: `<input #myInput type="text" [(ngModel)]="innerValue">`,
  styles: [`
    input {border: 5px solid green; } 
    input:focus { border: 5px solid blue; }
  `]
})
export class CustomInputComponent implements ControlValueAccessor  {

  @ViewChild('myInput', {static: false}) inputCtrl;

  //...functions to implement ControlValueAccessor

  @HostListener('focus')
  focusHandler() {
   this.inputCtrl.nativeElement.focus();
 }
}

这是一个stackblitz演示。

scss 文件仅限于其 angular 组件。 如果要全局使用 css,请使用style.scss

另一种选择是,使用style-urls数组将 scss 集成到您的子组件中:

@Component({
  selector: 'input-component',
  templateUrl: '/input-component.html',
  styleUrls: [
    './input-component.scss',             // own scss file
    './../path-to-other-compontent.scss'  // <--- here
  ]
})
export class InputComponent {
  [...]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM