首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试使用@ViewChield获取mat-input引用,但它返回未定义

我正在尝试使用@ViewChield获取mat-input引用,但它返回未定义
EN

Stack Overflow用户
提问于 2021-01-01 07:55:58
回答 1查看 69关注 0票数 1

HTML:

代码语言:javascript
复制
<mat-form-field *ngSwitchCase="'edit'">
  <input
    #myInput
    (keyup.enter)="edit()"
    [formControl]="taskTitleControl"
    matInput
  />
</mat-form-field>

TS:

代码语言:javascript
复制
export class TaskComponent implements OnInit {
  @Input() title: string;
  @Input() backGroundColor: string = 'red';
  currentMode: Mode = Mode.Show;
  taskTitleControl: FormControl;
  @ViewChild('myInput') input: MatInput;

  constructor() {}

  ngOnInit(): void {
    this.taskTitleControl = new FormControl(this.title || '', [
      Validators.required,
    ]);
  }

  edit(): void {
    this.currentMode = this.currentMode === Mode.Edit ? Mode.Show : Mode.Edit;
    console.log(this.input);
  }
}

我也尝试过这样使用引用:

@ViewChild(MatInput)输入: MatInput;

但仍然返回undefined,奇怪的是它只在第一次点击时返回undefined,在第二次点击时它起作用了。

我不知道ngSwitchCase是不是在干扰什么。

我做错了吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-01 08:50:31

如果你在视图初始化之前调用edit(),这将解释为什么viewChild为undefined,请确保edit()函数被调用ngAfterViewInit已被调用。

并添加static:flase选项

代码语言:javascript
复制
@ViewChild('myInput', { static: false }) input: ElementRef;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65526365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档