Angular2's hidden feature isn't functioning properly

There is a common suggestion to use *ngIf better than [hidden] but in my scenario, I want to keep the element in the DOM without it being visible. In my component.html file, I have:

<article #articleId id="bodyArticle" [hidden]="isClicked"></article>

In my .ts file:

isClicked = false;

and in the CSS:

article {
  width: 500px;
  margin: 0 auto;
  background-size: cover;
  overflow-wrap: break-word;
  justify-content: center;
  height: 500px;
  overflow-y: scroll;
}

[hidden]{display:none!important}

How can I make the article invisible while still keeping it in the DOM?

Edit:

I managed to make it work, but now when I try to do this:

var myArticle = document.querySelector('article');
myArticle.textContent = this.imageService.getBodyRes();

I get an error saying it's undefined. Why would this happen if the article is not removed from the DOM?

Answer №1

While the hidden attribute is perfectly acceptable to use, if you prefer to steer clear of it, you can opt to assign a specific class to the element instead.

<section #sectionId id="mainSection" [class.hidden]="isToggled"></section>

Make sure to adjust the CSS code as follows:

section.hidden {
  display: none !important;
}

Answer №2

Why not consider an alternative to using [hidden]? You could try this approach:

Utilize CSS:

.hidden { 
  visibility: none
}

and then in your HTML:

<article #articleId id="bodyArticle" [class.hidden]="isClicked"></article>

Answer №3

Instead of using a CSS class, you can utilize the [hidden] property to toggle the visibility of an element.

The issue you're encountering is that the [hidden] attribute will only take effect when the condition is true. In your scenario, you simply need to flip the value of your isClicked variable.

<article #articleId id="bodyArticle" [hidden]="!isClicked"></article>

Furthermore, be sure to delete the following section from your CSS:

[hidden]{display:none!important}

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

Interacting with User Input in React and TypeScript: Utilizing onKeyDown and onChange

Trying to assign both an onChange and onKeyDown event handler to an Input component with TypeScript has become overwhelming. This is the current structure of the Input component: import React, { ChangeEvent, KeyboardEvent } from 'react' import ...

Troubleshooting problems with CSS when zooming in and out

My CSS is designed for screen sizes larger than 1100 pixels. However, when I zoom in using ctrl and the plus sign, the center container on the page fails to wrap properly and suddenly breaks. HTML: <div id="outer_footer_bottom"> <div class=" ...

Changing Meteor Template to a Node.js/AngularJS Conversion

My current website is built with Meteor using templates structured like this: <body> {{>section1}} {{>section2}} {{>section3}} </body> <template name="section1"> <h1>This is Section 1</h1> </template> ...

Nested Observables in Angular are essential for handling asynchronous

In my service, I have a function that returns an observable array of entity ids. Another function in the service takes an entity id as a parameter and returns detailed information about that entity as an observable. My goal is to retrieve all entity ids u ...

Locate a specific tag based on its content using Scrapy

What is the best way to locate a tag based on its content? My current method works well for finding elements, but it can be unreliable due to varying page structures. yield { ... 'Education': response.css('.provider- ...

Using Strapi to showcase images in a React frontend

I am currently in the process of developing a website utilizing Strapi as a Content Management System (CMS) and Next.js with React for the Frontend. The website features an image slider that includes an image, a headline, and a description. While I have su ...

Is there a way to automatically update the child option when the parent option is altered?

I am attempting to modify the child option based on the parent option selection, similar to how it works in Bootstrap. ` <div class="wrap-input100 input100-select bg1"> <span class="label-input100">Indus ...

What is the best .scss file to use for updating the site?

Currently in the process of learning SASS and Bootstrap 4, I have set up some .scss partial files and imported them into my site.scss file as required. Making changes to Bootstrap involved modifying my _my-theme.scss file. But now, I'm wondering about ...

The HTML Canvas seems to be malfunctioning for some unknown reason

As a beginner in programming, I am struggling to understand why the code below is not working. The first three lines of the script are necessary for another part of the webpage, but I don't see how that would affect the rest of the code: <!DOCTY ...

Combining types: unable to utilize the second optional type within a for loop

I am facing an issue while looping through an array due to the union type. I am wondering what I have overlooked in the code below that is causing Visual Studio Code to not recognize the second optional type for that specific array. class Menu { // name ...

Incorporate a script into your Angular-CLI project

Can you guide me on inserting a script file into the index file of an angular2 project that was generated using angular-cli? : <!doctype html> <html> <head> <meta charset="utf-8"> <title>MyAngularApp</title> ...

Adjusting Javascript code to launch a URL in a new window or new tab depending on the user's selection

I seem to be encountering a puzzling issue with a link on my website. When clicked normally, the link opens in a new window. However, if I right-click and select "open in new window" or "open in new tab," it just reloads the same page where the link was cl ...

Learn how to bring in images using props within React and incorporate the 'import' pathway

These are the props I am passing: const people=['Eliana','Stefania','Ahmed'] { people.map(function(name, index){ return <Person item={index} name={name}/>; }) } import Eliana from '../assets/imgs/people ...

Is it possible to utilize $regex alongside $all in mongoDB?

In my current project, I am facing a challenge where I need to handle an array of strings received from the frontend. Each document in my mongoDB database also has its own array of keywords. The tricky part is that the strings sent from the frontend migh ...

A JavaScript function that yields no value is undefined

In my AngularJS project, I have a function that makes a GET request to the backend multiple times and returns data. Here is an example of how the function is used: function getFunction(inputData) { $http.get('request URL', { params: 'so ...

The JSP page is unable to locate or access relative resources such as CSS stylesheets and images

I'm struggling to create a basic web page using JSP. The issue I'm facing is that no resources, such as images or CSS, are being found regardless of the URL I use. Here is my simple JSP code: <%@ page language="java" contentType="text/html; ...

Res.render() is failing to display content

I'm facing an issue with my express route where it's not rendering a jade template properly. If I provide the wrong jade template string, I get the usual error indicating that the file couldn't be found to render in the browser. However, wh ...

What is the best way to showcase an array of objects in a table with two columns?

Looking to showcase an array of objects in a table with 2 columns. What's the simplest way to achieve this display? const columns = [ { subHeading: "A", subText: ["1", "2"] }, { subHeading: & ...

Stranger things happening when incorporating a generator function in React

Here's a simplified version of my component. It includes a generator function that cycles through values. const App = () => { const [state, setState] = useState("1") function* stateSwitch () { while (true){ yield "2" yield "3" ...

Angular 6 implement a waiting function using the subscribe method

I need to make multiple calls to a service using forEach, where each call depends on the completion of the previous one. The code is as follows: itemDefaultConfiguration.command = (onclick) => { this.createConfiguration(configuration.components); ...