Encountering an error in Angular 8 where attempting to access an element in ngOnInit results in "Cannot read property 'focus' of null"

My html code in modal-login.component.html includes the following:

<input placeholder="Password" id="password" type="password" formControlName="password" class="form-input" #loginFormPassword />

In my ts file (modal-login.component.ts), the code snippet is as follows:

ngOnInit() {
    for (const key of Object.keys(this.loginForm.controls)) {
        if (this.loginForm.controls[key].invalid) {
            // here key value is "password"
            const invalidControl = this.el.nativeElement.querySelector('[formcontrolname="' + key + '"]');
            invalidControl.focus(); //Here it gives me the error in console
            break;
        }
    }
}

I have attempted the following solution, but unfortunately it's not working as expected. While I do not receive an error, the input field for password does not capture focus:

public ngAfterViewInit(): void {
    console.log(this.el.nativeElement);
    this.el.nativeElement.focus();
}

Upon inspection, the browser console displays the following error message:

core.js:6014 ERROR TypeError: Cannot read property 'focus' of null

Any insights on what might be causing this issue would be greatly appreciated. Thank you!

Answer №1

One issue arises when view elements are not defined until Angular calls the ngAfterViewInit lifecycle hook.

@ViewChild('my-el', { static: false })
public el: ElementRef<any> | undefined;

public ngOnInit(): void {
   console.log(this.el); // always undefined
}

    @ViewChild('my-el', { static: false })
    public el: ElementRef<any> | undefined;

    public ngAfterViewInit(): void {
       // If an element was found by @ViewChild(), it will be defined here
       // it could stil be undefined if no element was found.
       console.log(this.el);
    }

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

typescript Parameter type dependency based on value is not functioning

interface AddDataRequest{ data:any } interface AddDataResponse{ id:string } interface ITest{ addData(json:AddDataRequest):Promise<AddDataResponse> removeData(json:AddDataResponse):Promise<boolean> } function testInterface<A e ...

The field 'shouldComponentUpdate' cannot be reassigned to itself

I encountered a TypeScript error while using shouldComponentUpdate: The error message states: "Property 'shouldComponentUpdate' in type 'Hello' is not assignable to the same property in base type Component<IProps, any, any>." ...

"Why is it that the onChange method of the antd table does not return an array of numbers for selectedRowKeys

In my current project, I am working on a Nextjs application that utilizes typescript and antd. The application includes a table component from antd which allows users to select rows. const rowSelection = { onChange: (selectedKeys: any[], selectedRows: M ...

Error: The variable __WEBPACK_EXTERNAL_MODULE_XX__ has not been defined

A unique npm package called our-map has been developed utilizing TypeScript, webpack, and the ArcGIS JS API to encapsulate an esri map within a React component. The functionality of the module has been verified through testing on a dedicated page within th ...

Implementing Angular routing in an ASP.NET Core 2 project

I recently encountered an issue with serving my Angular project within an ASP.NET Core project. After building the Angular app with "ng build --prod" and placing it in the wwwroot directory, I set up the ASP project to serve the site. Since I do not have a ...

CORS policy does not recognize the specific methods I specified in Express Gateway

I'm currently working on an Angular app and utilizing express gateway to manage my backend requests. Everything seems to be functioning correctly except for the CORS methods. I specifically want to allow only GET, PUT, and POST methods, but even witho ...

Ways to dynamically authenticate in AuthGuard and return a true value

I am working on an auth guard that has multiple conditions, and I am looking for a way to dynamically return a true value. Here is the relevant code snippet: auth.guard.ts canLoad(route: Route, segments: UrlSegment[]): Observable<boolean>|Promise&l ...

Tips on implementing mongoose 'Query<any>' types

I have been exploring ways to incorporate a cache layer into my TypeScript project. Recently, I came across an insightful article on Medium titled How to add a Redis cache layer to Mongoose in Node.js The author demonstrates adding a caching function to m ...

What is the best approach for submitting a form with data through a POST request in an Ionic application?

I am facing an issue while trying to make a POST request in Ionic for submitting a form with an array of data. Surprisingly, it works perfectly fine when I test it on POSTMAN. Although I attempted to use this form, it did not yield the desired results: ...

What steps should be taken to rectify the issue in the Angular HttpClient concerning the delete method?

(English is not my first language so please forgive me) Hello, I am new to Angular and I am attempting to make an HTTP request that deletes a doctor when a button is clicked. However, I am struggling with what steps I need to take to get my code working pr ...

Issues encountered when trying to implement a Navbar drop-down menu using Angular in conjunction with Bootstrap 4

I'm currently working on a web application using Angular 5 and Bootstrap 4, and I've encountered issues with the navigation menu bar dropdowns. Despite following the guidelines provided in the official documentation here, I can't seem to get ...

Exploring MongoDB files easily using Angular

I am currently working on implementing a user search feature using Angular to query users from a MongoDB collection. The function on the server side is already operational and functioning correctly with Postman. However, I encountered an error on the clien ...

Subscribing with multiple parameters in RxJS

I am facing a dilemma with two observables that I need to combine and use in subscribe, where I want the flexibility to either use both arguments or only one. I have experimented with .ForkJoin, .merge, .concat but haven't been able to achieve the des ...

Error encountered during Typescript compilation in Angular9 using Babylon4.1.0 - Unable to locate 'react' module or namespace 'JSX' not found

I am currently encountering compilation issues with Babylon4.1.0 within an angular9 app. It appears that the inspector is having trouble importing the internally used "react" module. To reproduce the issue: * Create a new angular9 app using the CLI * Add @ ...

I am looking to replicate a DOM element using Angular 4

I am interested in creating a clone of a DOM element. For example, if I have the following structure: <div> <p></p> <p></p> <p></p> <p></p> <button (click)="copy()"></button> & ...

How to effectively close an Angular material dialog with active ngForm?

Is it possible to close a dialog when using ngForm? I have multiple dialogs that appear before the final one, and I know how to get data using [mat-dialog-close]="true" along with MAT_DIALOG_DATA. However, in this last dialog, I am using ngForm t ...

What is the best way to position Scroll near a mat row in Angular?

With over 20 records loaded into an Angular Material table, I am experiencing an issue where clicking on the last row causes the scroll position to jump to the top of the page. I would like the scroll position to be set near the clicked row instead. Is th ...

Ionic 2 encountered an error: A non-empty string argument was anticipated

My goal is to show markers on a map using the stored postcode in JSON format. I have successfully accessed the lat and long values from the JSON data to display markers on the map. However, when I attempt to use the postcode, it fails and returns an erro ...

What are the recommended guidelines for using TypeScript effectively?

When facing difficulties, I have an array with functions, such as: this._array = [handler, func, type] How should I declare this private property? 1. Array<any> 2. any[] 3. T[] 4. Array<T> What is the difference in these declarations? ...

Utilizing External Libraries Added Through <script> Tags in React

My goal is to develop a Facebook Instant HTML5 application in React. Following their Quick Start guide, Facebook requires the installation of their SDK using a script tag: <script src="https://connect.facebook.net/en_US/fbinstant.6.3.js"></scrip ...