Assign a class to a button created dynamically using Angular

While working on my project, I encountered an issue where the CSS style was not being applied to a button that I created and assigned a class to in the component.ts file. Specifically, the font color of the button was not changing as expected. Here is the relevant code from the component.ts file:

let button = document.createElement('button');
button.innerHTML = 'North';
button.setAttribute('class', 'btn');

let element = document.createElement('div');
element.appendChild(button);

The corresponding styles are defined in the component.css file:

.btn
{
  color: red;
}

Answer №1

Utilize angular components to create interactive buttons

@Component({
  selector: 'my-app',
  templateUrl: '',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent {
  @ViewChild('element', { read: ViewContainerRef }) container: ViewContainerRef;

  constructor(
    private _componentFactoryResolver: ComponentFactoryResolver,
    private _injector: Injector,
  ) {}

  addButton(): void {
    const [componentRef, componentInstance] = this._createButton();
    componentInstance.title = 'North'
    componentInstance.class = 'active'

    this.container.insert(componentRef.hostView);
  }

  private _createButton(): [ComponentRef<ButtonComponent>, ButtonComponent] {
    const componentFactory = this._componentFactoryResolver.resolveComponentFactory(ButtonComponent);
    const componentRef = componentFactory.create(this._injector)

    const componentInstance = componentRef.instance;

    return [componentRef ,componentInstance];
  }
}

custom button component

@Component({
  selector: 'app-button',
  templateUrl: './button.component.html',
  styleUrls: ['./button.component.css'],
})
export class ButtonComponent {
  @Input() title: string;
  @Input() class: string = '';
}

The full example can be found on stackblitz

Answer №2

give this a shot

button.classList.add("btn");

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

The outcome of the JQuery function did not meet the anticipated result

Here is the code I am using: $("p").css("background-color", "yellow"); alert( $("p").css("background-color")); The alert is showing undefined instead of the expected color value. I have tested this code on both Google Chrome and Firefox. Strangely, it w ...

Error: Bitbucket pipeline does not have the necessary permissions to complete the operation

I encountered an error while building ng build on Bitbucket. My backend is Firebase. Can you help me figure out what I'm doing wrong? EPERM: operation not permitted, lchown '/opt/atlassian/pipelines/agent/build/node_modules/.cache/angular-buil ...

Unlocking the Interactive Potential of CSS Across All Screen Formats

I am currently working on transforming my website into an engaging and interactive platform. My first challenge: The alignment of the logo image does not meet my desired specifications. Whenever the screen width exceeds 1200 pixels, there seems to be exc ...

Utilizing the onBlur event to control focus within a React element

In the React component I'm working on, I have implemented an onBlur event handler. The logic inside this handler is supposed to return focus back to the target element. This code is written in TypeScript. emailBlur(e: React.FocusEvent<HTMLInputEle ...

Angular - Implementing *ngFor for nested table rows

I am currently working with an object that has a specific data structure: - title - id - [artists] - { artist obj / document , - [albums] - { album obj / document }, - { - album obj / document ...

When comparing the results of running the NextJS build file and VS Code locally, there are noticeable discrepancies in

I am encountering an issue with the .next/ build directory. After running npm run dev, I have a working version locally, but I didn't realize to test the build file before deployment. The problem came to my attention when trying to deploy the code o ...

Using a Typescript enum as a parameter type can lead to accepting incorrect values

When working with TypeScript, I have defined an enum, and now I want to create a function that accepts a parameter whose value is one of the enum's values. However, TypeScript does not validate the value against the enum, allowing values outside of th ...

Is it feasible to execute exe files within a ReactJS environment?

Hey there! I've created a Game Launcher using ReactJS for my Unity game and was wondering if it's feasible to start the game (an exe file) simply by clicking on the play button. Can anyone please advise me on this? ...

What steps should I take to resolve the npm run build error in my Angular application when deploying it with a server in Visual Studio Code?

When attempting to build my application using the npm run build --configuration production command, I encountered the following errors that I am unsure how to address. Being new to utilizing npm build commands, I seek assistance in resolving this issue. n ...

The process of invoking another component's method in Angular 2

Is there a way to call a function from one component in Angular 2 into another? I have two components and I need to invoke a method defined in the other component. The components do not have a parent-child relationship, as the overview component is a rout ...

Managing Geolocation in Ionic2 presenting challenges

Attempting to utilize Geolocation in ionic2 for device location access. Referred to the official documentation on https://ionicframework.com/docs/native/geolocation/. Successfully installed the necessary packages: $ ionic plugin add cordova-plugin-geoloca ...

How to Retrieve Inputs from Child Component Form without Prop Passing?

Within the Parent component below, there is a Dropdown menu with two options. Selecting "TOP LEVEL" will display Form1, while selecting "MAKE ITEM" will show Form2. If no option is selected, both forms remain hidden. The Parent component also contains a Bu ...

What is the best way to retrieve the overall count of a field within a reactive form, while also identifying both the valid

In the form I am working on, some fields are required while others are not. I am trying to figure out how many total fields there are and how many have been filled correctly without breaking any validation rules, even if they are not marked as required. I ...

Is there a way to set up a background process within electron that captures a screenshot of the entire desktop?

I'm currently working on a Desktop application using Angular2 and Electron that captures screenshots of the entire desktop and saves them to a specified path on my PC. The code for capturing screenshots is implemented in the app.component.ts file, but ...

Discover the process of accessing and setting values in Angular 8 to easily retrieve and manipulate data from any page!

Greetings! I am currently utilizing Angular 8 and I have a query regarding how to access the set value in any given page. Here is a snippet of my code: class.ts export class testClass { get test():string{ return this.sexe; } ...

Using null or undefined for ternary operator formatting in React applications

When styling a component, what should be used if a specific condition is not fulfilled: null, undefined, or something else? For example: errorStyle: { right: locale === Locales.ARABIC ? 0 : null, left: locale !== Locales.ARABIC ? 0 : null, .. ...

What is the best way to integrate my Angular keycloak setup with an idphint attribute?

I have successfully integrated the angular keycloak adapter from https://www.npmjs.com/package/keycloak-angular to connect with our keycloak server. Currently, I am exploring the idphint attribute to redirect the request to a different identity provider. ...

Clarifying the concept of invoking generic methods in TypeScript

I'm currently working on creating a versatile method that will execute a function on a list of instances: private exec<Method extends keyof Klass>( method: Method, ...params: Parameters<Klass[Method]> ) { th ...

When switching from JavaScript to jQuery, the button values become invisible

Currently, I have a functional app that can dynamically change the values of buttons based on user input. The current implementation is in vanilla JavaScript within the script.js file. However, I am looking to enhance the functionality and user experience ...

At what point are routed components initialized?

Here is a route setup I am working with: path: ':id', component: ViewBookPageComponent }, After adding this route, an error keeps popping up: Error: Cannot read property 'id' of null I haven't included a null check in the compo ...