错误TypeError:无法读取未定义的属性“焦点”

时间:2019-10-04 16:04:58

标签: angular typescript

当我重定向到另一个页面时以及重定向*ngIf="pageNumber==3"之后重定向*ngIf="pageNumber==2"之前,为什么为什么不断收到此错误“ TypeError:无法读取未定义的属性'focus'”?

这是我的html文件

<mat-form-field>
    <input #employeeNameInput="matInput" (focus)="form.controls.employeeName.focused = true" matInput formControlName="employeeName">
</mat-form-field>

<p><span [routerLink]="['/prasymas-atleisti-is-darbo', 2]" class="top-space"
         [innerHTML]="form.controls.employeeName.value" (click)="setFocus(employeeNameInput)"
         [ngClass]="{'focused': form.controls.employeeName.focused == true }"
         (clickElsewhere)="clickOff('employeeName')" [typeInput]="employeeNameInput"></span>
</p>

这是我的ts文件

@ViewChild('employeeNameInput') employeeNameInput: MatFormField

setFocus(input: MatInput) {
    input.focus();
}

问题是当*ngIf="pageNumber==3"元素被隐藏时,而当*ngIf="pageNumber==2"元素重新出现而不被隐藏时,如何使该元素与*ngIf一起使用?

1 个答案:

答案 0 :(得分:0)

从您在上面提供的有限代码示例中,如果您遇到问题,我猜测以下内容。但是还需要更多确认。

@Viewchild在DOM中定位您的引用。如果使用* ngIf在ViewChild中隐藏包含您要定位的组件的零件,那么您将无法使用它!

这是因为* ng如果主动从DOM中删除该元素,则不会简单地将其隐藏。您可以使用[hidden]来避免这种情况。

[hidden]='pageNumber !==2'-例如